के अंदर DataTemplate के रूप में UserControl मैं अपने UserControls को पृष्ठ या विंडो जैसे डेटा टेम्पलेट्स के रूप में पुन: उपयोग करना चाहता हूं, इस उदाहरण में ListBox के अंदर। सब कुछ एमवीवीएम है।ListCox
मेरे पास एक साधारण ऑब्जेक्ट "कार्ड" प्रदर्शित करने के लिए "कार्डकंट्रोल" नामक उपयोगकर्ता नियंत्रण है। कार्ड में दो गुण हैं, "आईडी" और "कार्ड इमेज"। नियंत्रण डेटाकॉन्टेक्स्ट XAML के माध्यम से सेट किया गया है। अगर मैं वीएस या ब्लेंड में यह UserControl खोलता हूं तो यह मुझे डमी कार्ड दिखाता है जिसे मैंने इसी व्यूमोडेल में परिभाषित किया है।
अब मेरे पास "CardSetControl" नामक एक और उपयोगकर्ता नियंत्रण है, जो कार्ड का संग्रह प्रदर्शित करना चाहिए। तो व्यूमोडेल में एक प्रकार की संपत्ति है ObservableCollection < कार्ड > जिसे "कार्ड" कहा जाता है।
यहाँ कोड है:
<ListBox x:Name="MyList" ItemsSource="{Binding CardSet.Cards}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<!-- WORKING, but not what i want -->
<TextBlock Text="{Binding ID}" /> // would display ID of Card
<Image Source="{Binding Image}" /> // would display Image of Card
<!-- NOT WORKING, but this is how i want it to work -->
<UserControls:CardControl DataContext="{Binding "Current listbox item as DataContext of CardControl???"}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
MVVM और DataContext के बारे में लेख की टन पढ़ने के बाद/बाइंडिंग मैं अभी भी यह काम करने के लिए नहीं मिला। यह संपूर्ण पदानुक्रमित यूएसर कंट्रोल्स/डेटाकॉन्टेक्स चीजों ने सबसे अच्छा तरीका कैसे बनाया है?
विल, मेरी क्षमा याचना मैं मूल रूप से ठीक उसी जवाब आप के रूप में दिया:
यहाँ लेख है।अगली बार जवाब देने से पहले मुझे पृष्ठ को रीफ्रेश करना चाहिए;) –
इस तरह एक मॉडल (कार्ड) को उपयोगकर्ता नियंत्रण में डेटाकॉन्टेक्स्ट के रूप में पास किया जाता है। क्या होगा यदि मैं उस उपयोगकर्ता नियंत्रण को अपने दृश्य मॉडल का उपयोग करने के लिए रखना चाहता हूं? मुझे इस मॉडल को एक व्यू मॉडल में कैसे पास करना चाहिए और दृश्य मॉडल को नियंत्रण के दृश्य में बांधना चाहिए? –
@ ओन्ड्रेज जेनेसेक: UserControls को अपने स्वयं के दृश्य मॉडल रखने के लिए डिज़ाइन नहीं किया जाना चाहिए। उनके पास अपनी सतह पर सार्वजनिक बाध्यकारी गुण होना चाहिए कि उपयोगकर्ता अपने स्वयं के दृश्य मॉडल से जुड़ जाएंगे। यह उत्तर ओपी के लिए सर्वोत्तम प्रथाओं की तुलना में अधिक आकार दिया गया है:/ – Will