मैं सिर्फ डब्ल्यूपीएफ में एमवीवीएम पैटर्न के साथ शुरुआत कर रहा हूं और मैंने फैसला किया कि मेरे कोड को ढांचाने का सबसे शानदार तरीका दृश्य-निर्माता को व्यू-कन्स्ट्रक्टर में इंजेक्शन दे रहा था।एमवीवीएम - क्या दृश्य को वास्तव में एक डिफ़ॉल्ट कन्स्ट्रक्टर होना चाहिए?
यह सब ठीक है और अच्छा है, लेकिन रीशेपर XAML में एक चेतावनी देता है कि मेरे दृश्य में डिफ़ॉल्ट कन्स्ट्रक्टर नहीं है। मुझे लगता है कि ऐसा इसलिए है कि यदि आवश्यक हो तो मैं एक्सएएमएल में अपना विचार बना सकता हूं, लेकिन यह केवल एक अनुमान है।
मैं कन्स्ट्रक्टर में दृश्य-मॉडल लेने के लिए अपने विचार की आवश्यकता के द्वारा क्या छोड़ रहा हूं?
संपादित करें: मेरा विचार निर्माता इस तरह दिखता है:
public ExampleView(ExampleViewModel viewModel)
{
if (viewModel == null) throw new ArgumentNullException("viewModel");
DataContext = viewModel;
}
उत्तर: मैं इसे जारी रखते हुए जहां DesignTime नाम स्थान परीक्षण और डिजाइन समय के लिए ViewModel के संस्करणों मज़ाक उड़ाया शामिल की स्थापना की, बस गए समर्थन।
ExampleView.xaml.cs
public ExampleView()
{
InitializeComponent();
}
public ExampleView(IExampleViewModel viewModel)
: this()
{
DataContext = viewModel;
}
ExampleView.xaml
<UserControl
x:Class="Wpf.Examples.ExampleView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:DesignTime="clr-namespace:Wpf.Examples.DesignTime">
<UserControl.DataContext>
<DesignTime:ExampleViewModel/>
</UserControl.DataContext>
</UserControl>
मैं कन्स्ट्रक्टर में डेटाकॉन्टेक्स्ट को वैसे भी सेट कर रहा हूं, क्या इसके लिए एक बेहतर पैटर्न है? –
फैक्टरी का प्रयोग करें? डेटाकॉन्टेक्स्ट मैन्युअल रूप से सेट करें? एक खाली डिफ़ॉल्ट कन्स्ट्रक्टर बनाएँ? –