मुझे यह पता लगाने की आवश्यकता है कि व्यूमोडल्स के बीच संवाद कैसे करें। मैं एमवीवीएम के लिए नया हूँ इसलिए कृपया दयालु रहें।एमवीवीएम पैटर्न, व्यू मॉडेल डेटा कॉन्टेक्स्ट प्रश्न
यहाँ एक उदाहरण नीचे dumbed
वर्ग परिभाषाओं (मान लेते हैं कि मैं ParentViewModel में Child.PropertyChanged घटना झुका है) है:
public class ParentViewModel : ViewModelBase
{
public ChildViewModel Child { get; set; }
}
public class ChildViewModel : ViewModelBase
{
String _FirstName;
public String FirstName
{
get { return _FirstName; }
set
{
_FirstName = value;
OnPropertyChanged("FirstName");
}
}
}
यहाँ तुम क्या संसाधन शब्दकोश में देखते हैं
<DataTemplate DataType="{x:Type vm:ParentViewModel}">
<vw:ParentView/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:ChildViewModel}">
<vw:ChildView/>
</DataTemplate>
और ChildView का कोड-पीछे:
public partial class ChildView : UserControl
{
public QueueView()
{
InitializeComponent();
DataContext = new ChildViewModel();
}
}
स्पष्ट समस्या यह है कि जब चाइल्डव्यू तत्काल हो जाता है (डेटा टेम्पलेट से चयन के माध्यम से) यह एक नया ChildViewModel क्लास बनाता है और ParentViewModel तक इसका उपयोग नहीं होता है।
तो मैं व्यू के डेटा कॉन्टेक्स्ट को मूल व्यूमोडेल कैसे चालू कर सकता हूं जिससे डेटा टेम्पलेट का चयन किया जा सके?
एक स्पष्ट फिक्स है कि ChildViewModel में गुणों को ParentViewModel में मिलाएं, लेकिन मैं इसे फिर से उपयोग करने के लिए अलग कर दूंगा।
मुझे यकीन है कि उत्तर छोटा है, मैं बस यह जानना चाहता हूं कि यह क्या है। :)
अग्रिम धन्यवाद।
DataContext = new ChildViewModel();
देखने के DataContext
स्वचालित रूप से WPF द्वारा निर्धारित किया जाएगा:
वैसे, मुझे लगता है कि आपने उदाहरण को सरल बनाने के लिए अपनी कक्षाओं के नाम बदल दिए हैं ... इसके पीछे कोड में "चाइल्ड व्यू" के लिए वर्ग का नाम "क्यूई व्यू" है। –
क्या यह एक टाइपो था? –
हां यह एक टाइपो था। क्षमा करें :) – Jose