Ho uno scenario in cui non so davvero come associare i dati ai controlli ospitati in un controllo utente a più datacontex.WPF che associa più controlli a diversi datacontatti
i dati che voglio legare viene da 2 classi
UserInfo, UserExtendedInfo
DataContext di UserControl è impostata su UserInfo modo che io possa legare la maggior parte dei comandi facilmente facendo quanto segue
<Label Name="LblEmail" Text="{Binding Email}" />
Comunque io don sapere come associare facilmente le proprietà dalla classe UserExtendedInfo. Il mio pensiero iniziale era di impostare il datacontext di ciascun controllo che desidera utilizzare i dati da UserExtendedInfo in modo da poter fare lo stesso. Ma questo sembra ingombrante come dovrei assegnare manualmente ciascuno individualmente. I dati per UserExtendedInfo devono essere recuperati dal database ogni volta che UserControl diventa visibile in modo che non vada fuori sincrono.
XAML:
<Label Name="LblTest" Text="{Binding Locale}" />
Codice Dietro:
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, questo ha molto senso. Tante cose nuove da imparare in WPF :) – Alex
Invece di creare un nuovo modello il cui unico scopo è supportare questa particolare vista, è sufficiente aggiungere UserInfo e UserExtendedInfo come proprietà pubbliche di un ViewModel che è possibile associare alla vista. (Vedi Rich's [answer] (http://stackoverflow.com/questions/679933/wpf-binding-multiple-controls-to-different-datacontexts/680052#680052)). – totorocat