У меня есть сценарий, в котором я действительно не знаю, как привязывать данные к элементам управления, размещенным в UserControl, к нескольким datacontexts.
Данные, которые я хочу связывать, поступают из 2 классов
UserInfo, UserExtendedInfo
В datacontext UserControl устанавливается UserInfo, поэтому я могу привязать большинство элементов управления, выполнив следующие
<Label Name="LblEmail" Text="{Binding Email}" />
Однако я не знаю, как легко связывать свойства из класса UserExtendedInfo. Моя первоначальная мысль заключалась в том, чтобы установить datacontext каждого элемента управления, который хочет использовать данные из UserExtendedInfo, чтобы я мог сделать то же самое. Но это кажется громоздким, так как мне придется вручную назначать каждый из них. Данные для UserExtendedInfo должны извлекаться из базы данных каждый раз, когда UserControl становится видимым, чтобы он не выходил из синхронизации.
XAML:
<Label Name="LblTest" Text="{Binding Locale}" />
Код за:
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