2009-05-12 8 views
2

Je suis complètement nouveau à la liaison de données dans WPF et j'essaye de lier une propriété d'objet à une zone de texte. Mon but estDataBind à une zone de texte dans WPF

public class TestObj 
{ 
    private m_Limit; 

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

Mon XAML ressemble

<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> 

Maintenant, évidemment, je ne suis pas la source mise nulle part, et je suis très confus. J'ai eu ça pour travailler avec une liste, mais maintenant je suis perplexe. Merci pour toute aide.

Répondre

6

Vous devez définir le DataContext. Que ce soit dans le code derrière:

textBox3.DataContext = instanceOfTestObj; 

ou en utilisant un fournisseur de données objet

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

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

Il y a une belle introduction à databinding plus en profondeur here.

2

Si vous ne spécifiez pas Source, RelativeSource ou ElementName de la liaison, la liaison utilise DataContext du contrôle. Le DataContext est passé à travers l'arborescence visuelle de l'élément supérieur (par exemple, Window) vers les inférieurs (TextBox dans votre cas). Par conséquent, WPF recherchera la propriété Limit dans votre classe Window (car vous avez lié le DataContext de la fenêtre à la fenêtre elle-même).

De plus, vous pouvez lire sur base DataBinding dans WPF: http://msdn.microsoft.com/en-us/library/ms750612.aspx

1

Sauf indication contraire, la source d'une liaison est toujours le DataContext du contrôle. Vous devez définir le DataContext pour votre formulaire à l'instance TestObj

+0

connaissez-vous ce que le xml pour ce serait? – Steve

+0

votre XAML est correct, vous devez définir le DataContext dans le code-derrière –

Questions connexes