Tengo un escenario en el que realmente no sé cómo vincular datos a los controles alojados en un UserControl con múltiples contextos de datos.WPF vinculando múltiples controles a diferentes contextos de datos
los datos que desea enlazar proviene de 2 clases
UserInfo, UserExtendedInfo
El DataContext del UserControl se establece en información del usuario para que pueda obligar a la mayoría de los controles fácilmente haciendo lo siguiente
<Label Name="LblEmail" Text="{Binding Email}" />
Sin embargo Pongo No sé cómo enlazar propiedades de la clase UserExtendedInfo fácilmente. Mi idea inicial fue establecer el contexto de datos de cada control que desea utilizar los datos de UserExtendedInfo para que yo pudiera hacer lo mismo. Pero esto parece engorroso ya que tendría que asignar manualmente cada uno individualmente. Los datos de UserExtendedInfo deben obtenerse de la base de datos cada vez que el UserControl se vuelva visible para que no se desincronice.
XAML:
<Label Name="LblTest" Text="{Binding Locale}" />
código subyacente:
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, eso tiene mucho sentido. Hay tantas cosas nuevas que aprender en WPF :) – Alex
En lugar de crear un nuevo modelo cuyo único propósito sea admitir esta vista en particular, solo debe agregar UserInfo y UserExtendedInfo como propiedades públicas de un ViewModel que puede vincular a la vista. (Ver [respuesta] de Rich (http://stackoverflow.com/questions/679933/wpf-binding-multiple-controls-to-different-datacontexts/680052#680052)). – totorocat