J'ai un scénario dans lequel je ne sais pas vraiment comment lier des données à des contrôles hébergés dans un UserControl à plusieurs datacontexts.WPF lier plusieurs contrôles à différentes datacontexts
Les données que je veux lier provient de 2 classes
UserInfo, UserExtendedInfo
Le datacontext du UserControl est réglé sur UserInfo donc je peux lier la plupart des contrôles faisant facilement les éléments suivants
<Label Name="LblEmail" Text="{Binding Email}" />
Cependant, je don Je ne sais pas comment lier facilement les propriétés de la classe UserExtendedInfo. Ma première pensée était de définir le contexte de chaque contrôle qui veut utiliser les données de UserExtendedInfo pour que je puisse faire la même chose. Mais cela semble lourd car je devrais attribuer manuellement chacun individuellement. Les données de UserExtendedInfo doivent être extraites de la base de données chaque fois que UserControl devient visible afin de ne pas être désynchronisé.
XAML:
<Label Name="LblTest" Text="{Binding Locale}" />
code Derrière:
Private Sub UserManager_IsVisibleChanged(ByVal sender As System.Object, ByVal e As System.Windows.DependencyPropertyChangedEventArgs)
If DirectCast(e.NewValue, Boolean) Then
Dim user As UserInfo = DirectCast(DataContext, UserInfo)
If user IsNot Nothing Then
Dim usrExt As UserExtenedInfo = UserController.GetUserExtended(user.userID)
LblTest.DataContext = usrExt
Else
Throw New ArgumentException("UserId doesn't exist or is less than 1")
End If
End If
End Sub
Ok cela a beaucoup de sens. Beaucoup de choses nouvelles à apprendre dans WPF :) – Alex
Au lieu de créer un nouveau modèle dont le seul but est de supporter cette vue particulière, il suffit d'ajouter UserInfo et UserExtendedInfo en tant que propriétés publiques d'un ViewModel que vous pouvez lier à la vue. (Voir Rich [réponse] (http://stackoverflow.com/questions/679933/wpf-binding-multiple-controls-to-different-datacontexts/680052#680052)). – totorocat