ItemsControl ItemTemplate Binding
Dans WPF4.0, j'ai une classe qui contient d'autres types de classes de propriétés (combinaison de plusieurs types de données pour l'affichage). Quelque chose comme:
public partial class Owner
{
public string OwnerName { get; set; }
public int OwnerId { get; set; }
}
partial class ForDisplay
{
public Owner OwnerData { get; set; }
public int Credit { get; set; }
}
Dans ma fenêtre, j'ai un ItemsControl avec la suivante (coupées pour plus de clarté):
<ItemsControl ItemsSource={Binding}>
<ItemsControl.ItemTemplate>
<DataTemplate>
<local:MyDisplayControl
OwnerName={Binding OwnerData.OwnerName}
Credit={Binding Credit} />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Je puis obtenir une collection d'afficher des informations à partir de la couche de données, et définir la DataContext
de la ItemsControl
à cette collection. Le "Crédit" de la propriété s'affiche correctement, mais le OwnerName propriété n'. Au lieu de cela, je reçois une erreur de liaison:
Erreur 40: BindingExpression chemin
erreur: 'OwnerName biens non trouvé
sur l '"objet" "ForDisplay'
(HashCode=449124874)'.
BindingExpression:Path=OwnerName;
DataItem='ForDisplay'
(HashCode=449124874); élément cible
est "TextBlock (Nom=txtOwnerName');
la propriété target est "Texte" (type
'String')
Je ne comprends pas pourquoi c'est d'essayer de regarder pour le OwnerName propriété dans le ForDisplay classe, plutôt que par le Propriétaire de la classe à partir de la ForDisplay OwnerData propriété.
Modifier
Il semble que cela a quelque chose à faire avec l'aide de la commande personnalisée. Si je lier les mêmes propriétés d'un TextBlock
, qu'ils fonctionnent correctement.
<ItemsControl ItemsSource={Binding}>
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<local:MyDisplayControl
OwnerName={Binding OwnerData.OwnerName}
Credit={Binding Credit} />
<TextBlock Text="{Binding OwnerData.OwnerName}" />
<TextBlock Text="{Binding Credit}" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
source d'informationauteur Wonko the Sane
Vous devez vous connecter pour publier un commentaire.
Êtes-vous sûr que le code que vous avez posté ici, c'EST le code que vous utilisez dans votre solution? Parce que, ce code fonctionne pour moi :
XAML
De la fenêtre de l'Événement Chargé