मेरे पास एक परिदृश्य है जहां मुझे वास्तव में नहीं पता कि उपयोगकर्ता डेटा में एकाधिक नियंत्रणों को होस्ट करने के लिए डेटा को कैसे बाध्य करना है।डब्ल्यूपीएफ अलग-अलग डेटाकॉन्टेक्स के लिए एकाधिक नियंत्रण बाध्यकारी
डेटा मैं बाध्य करने के लिए चाहते हैं 2 वर्गों
UserInfo, UserExtendedInfo
UserControl के DataContext UserInfo पर सेट है तो मैं आसानी से निम्नलिखित
<Label Name="LblEmail" Text="{Binding Email}" />
हालांकि मैं डॉन कर सबसे नियंत्रण बाध्य कर सकते हैं से आता है उपयोगकर्ताExtendedInfo वर्ग से आसानी से गुणों को बाध्य करने के बारे में नहीं पता। मेरा प्रारंभिक विचार प्रत्येक नियंत्रण के डेटाकॉन्टेक्स्ट को सेट करना था जो 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
ठीक है जो बहुत समझ में आता है। इतना नई सामग्री के बजाय एक नया मॉडल जिसका एकमात्र उद्देश्य इस विशेष दृश्य का समर्थन करने के, तो आप सिर्फ एक ViewModel जो आप देखना बाध्य कर सकते हैं की जनता के गुण के रूप में UserInfo और UserExtendedInfo जोड़ना चाहिए है बनाने के WPF में :) – Alex
जानने के लिए। (रिच का देखें [उत्तर] (http://stackoverflow.com/questions/679933/wpf-binding-multiple-controls-to-different-datacontexts/680052#680052))। – totorocat