2010-09-10 17 views
5

मैं एक गैर-खाली कन्स्ट्रक्टर के साथ व्यूमोडेल के साथ UserControl कैसे डेटामैटलेट कर सकता हूं?डेटा एक गैर-खाली नियंत्रक के साथ एक ViewModel टेम्पलेट?

public PersonViewModel(Person person) 
{ 
    _person= person; 
    // do some stuff       
} 

Xaml में इस बाइंडिंग ctor के रूप में दुर्घटना जाएगा रिक्त नहीं है। लेकिन जैसा कि मैं व्यूमोडल्स के साथ अभिभावक/बाल संबंधों का उपयोग करता हूं, मुझे व्यक्ति वस्तु को व्यूमोडेल के निर्माता को पास करना होगा ...

आप उस स्थिति का सामना कैसे करते हैं?

+1

आपका व्यू मॉडल आपके पास जो भी कंस्ट्रक्टर हो सकता है। यह दृश्य है (उदा। आपका उपयोगकर्ता नियंत्रण) जो एक डिफ़ॉल्ट कन्स्ट्रक्टर का निवास करना चाहिए। आपके कोड के साथ कुछ और गलत होना चाहिए। कैसे एक अधिक पूर्ण उदाहरण पोस्ट करने के बारे – bitbonk

उत्तर

1
var person = new Person(); 
var viewModel = new PersonViewModel(person); 

var view = new EditPersonView(viewModel); // use overloaded constructor to inject DataContext 
// OR 
var view = new EditPersonView{ DataContext = viewModel }; 

तुम सच में इन्स्तांत XAML में दृश्य-मॉडल चाहते हैं, तो आप एक public Person Person संपत्ति का खुलासा और parameterless निर्माता के साथ छड़ी की जरूरत है। बस Person सेटटर में करें जो आपने कन्स्ट्रक्टर में किया होगा। बेशक, अब आपने कीड़े का एक डिब्बे खोला है क्योंकि आपको पैरामीटर रहित कन्स्ट्रक्टर के साथ एक्सएएमएल में Person को तुरंत चालू करने की आवश्यकता होगी और जल्द ही चीजें बहुत बदसूरत हो जाएंगी ...

+0

(कि देखें + XAML uncludes) के रूप में आप बदसूरत कहते हैं ... दृष्टि में कोई समाधान नहीं:/ – Elisabeth

+0

@Lisa मैं पूछ सकता हूँ तुम क्यों XAML से देखने-मॉडल का दृष्टांत करना चाहते हैं? यह चीजों को गन्दा बनाता है। – Jay

+4

क्योंकि मुझे यह उपयोगी लगता है: ............................... <देखें: ग्राहक उपयोगकर्ता नियंत्रक /> Elisabeth

संबंधित मुद्दे