2009-05-12 4 views
2

Ich bin völlig neu zu Datenbindung in WPF, und ich versuche, eine Objekteigenschaft an eine Textbox zu binden. Meine Aufgabe ist esDataBind zu einem Textfeld in WPF

public class TestObj 
{ 
    private m_Limit; 

    public string Limit 
    { 
     get 
     { 
     return m_Limit; 
     } 
     set 
     { 
      m_Limit = value; 
     } 
    } 

Meine XAML wie

<Window x:Class="NECSHarness2.UpdateJobParameters" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:tools="clr-namespace:ManagementObjects;assembly=Core" 
DataContext="{Binding RelativeSource={RelativeSource Self}}" 
Title="Update Job Parameters" Height="320" Width="460"> 
<Grid> 
    <TextBox Text ="{Binding Path = Limit, Mode = TwoWay}" Height="20" HorizontalAlignment="Right" Margin="0,48,29,0" Name="textBox3" VerticalAlignment="Top" Width="161" /> 
    </Grid> 

Jetzt habe ich die Quelle nicht überall, offensichtlich habe die Einrichtung sieht, und ich bin sehr verwirrt. Ich habe das mit einer Listview arbeiten lassen, aber jetzt bin ich ratlos. Danke für jede Hilfe.

Antwort

6

Sie müssen den DataContext festlegen. Entweder in dem Code-behind:

textBox3.DataContext = instanceOfTestObj; 

oder mit einem Objektdatenanbieter

<Window.Resources> 
    <src:TestObj x:Key="theData" Limit="Wibble" /> 
    </Window.Resources> 

    <TextBox Text="{Binding Source={StaticResource theData}..../> 

Es gibt eine schöne Einführung in mehr Tiefe zu Datenbindung here.

2

Wenn Sie die Quelle, RelativeSource oder ElementName der Bindung nicht angeben, verwendet die Bindung den DataContext des Steuerelements. Der DataContext wird durch den visuellen Baum vom oberen Element (z. B. Fenster) zu den unteren (in Ihrem Fall TextBox) geleitet.

WPF wird also nach der Eigenschaft "Limit" in Ihrer Window-Klasse suchen (weil Sie den DataContext des Fensters an das Fenster selbst gebunden haben).

Auch können Sie Grundlagen lesen über Databinding in WPF wollen: http://msdn.microsoft.com/en-us/library/ms750612.aspx

1

Sofern nicht anders angegeben, die Quelle einer Bindung ist immer die Datacontext der Steuerung. Sie haben die Datacontext für das Formular an die TestObj Instanz

+0

wissen Sie, was die xml für das wäre? – Steve

+0

Ihr XAML ist korrekt, Sie müssen den DataContext in Code-Behind setzen –