2010-08-02 9 views
0

J'ai un listview qui est itemsource est une ObservableCollection de MyModel. Je suis en train de comprendre comment lier une propriété de texte zone de texte à la propriété Nom de la propriété du propriétaire du modèleComment lier à une propriété d'une propriété dans WPF

public class Person 
{ 
    public string Name { get; set; } 
    public string Address { get; set; } 
    //... 
} 

public class MyModel 
{ 
    public string Title { get; set; } 
    public Person Owner { get; set; } 
    //... 
} 

J'ai essayé:

<TextBlock Text="{Binding Owner.Name}" /> 

mais qui laisse le blanc TextBlock. Quelle est la syntaxe appropriée?

Répondre

1

La liaison semble correcte. Je suppose que vous mettez le TextBlock dans un DataTemplate et joint ceci au ListView. Si oui, cela devrait fonctionner.

Pour trouver l'erreur, remplacez le Binding par un littéral pour voir si vous avez des lignes (le littéral doit être affiché dans chaque ligne). Si ce n'est pas le cas, vérifiez le ItemsSource. Si oui, vérifiez que vous avez réellement un objet Person attaché à vos instances MyModel et que la propriété Name n'est pas vide ou vide. Vérifiez également la fenêtre de sortie de VS. Là, vous verrez des erreurs de liaison.

Si vous n'avez pas DataTemplate, voici un exemple:

<ListView ItemsSource="[Your ItemsSource]"> 
    <ListView.ItemTemplate>     
     <DataTemplate> 
      <Grid> 
       <TextBlock Text="{Binding Owner.Name}"/> 
      </Grid>      
     </DataTemplate>     
    </ListView.ItemTemplate>          
</ListView> 
+0

Je suis stupide. Je n'ai pas réellement la propriété de nom définie comme propriété que je l'avais en tant que membre public. Oops. –

0

Vérifiez que le DataContext est défini correctement et implémentez INotifyPropertyChanged (déclenchez l'événement qu'il définit lorsque la valeur de la propriété change).

0

Essayez d'utiliser le formulaire Assistant Source de données VS 2010 ajouter que ces classes et cliquez sur, clik, clik

<TextBox Grid.Column="1" Grid.Row="0" Height="23" HorizontalAlignment="Left" Margin="3" Name="nameTextBox" Text="{Binding Path=Owner.Name, Mode=TwoWay, ValidatesOnExceptions=true, NotifyOnValidationError=true}" VerticalAlignment="Center" Width="120" /> 
Questions connexes