मैं अपना खुद का UserControl बना रहा हूं और मेरे पास उपयोगकर्ता नियंत्रण के तहत दो अलग-अलग डेटा टेम्पलेट हैं। मेरे XAML में स्रोत अनुभाग। मैं सूची दृश्य में प्रदर्शित वस्तुओं पर किसी संपत्ति के मूल्य के आधार पर इन दो डेटामैप्लेट्स के बीच चयन करना चाहता हूं। मैं इसे कस्टम डेटा टेम्पलेट चयनकर्ता कक्षा बनाकर और ओवरराइडिंग का चयन कर रहा हूं SelectTemplate विधि जिसे डेटा टेम्पलेट को वापस करना है, जिसे मैं उपयोग करना चाहता हूं। हालांकि, मुझे नहीं पता कि UserControls संसाधन अनुभाग में स्थित मेरे डेटामैप्लेट्स को "ढूंढने" के बारे में कोई जानकारी नहीं है, मैंने देखा है कि सभी उदाहरण केवल विंडो से डेटामैप्लेट प्राप्त करते हैं। स्रोत। इस उदाहरण में वे लाने वर्तमान MainWindow और फिर DataTemplate खोजने के लिए FindResource का उपयोग, मैं कैसे एक समान तरीके ?:WPF में DataTemplateSelector क्लास से UserControl में संसाधन कैसे ढूंढें?
public override DataTemplate
SelectTemplate(object item, DependencyObject container)
{
if (item != null && item is AuctionItem)
{
AuctionItem auctionItem = item as AuctionItem;
Window window = Application.Current.MainWindow;
switch (auctionItem.SpecialFeatures)
{
case SpecialFeatures.None:
return
window.FindResource("AuctionItem_None")
as DataTemplate;
case SpecialFeatures.Color:
return
window.FindResource("AuctionItem_Color")
as DataTemplate;
}
}
return null;
}
उपरोक्त उदाहरण यहां से है में मेरी UserControl लाने करते : ItemsControl.ItemTemplateSelector Property
क्या XAML में एक ही चीज़ करने का कोई तरीका नहीं है? – Joakim
ठीक है यह ठीक काम करता है ... लेकिन यह जानना अच्छा होगा कि ऐसा करने का अनुशंसित तरीका क्या है, अधिमानतः एक्सएएमएल में यह सब कर रहा है। – Joakim
तो सच .. मैं भी एक सुंदर तरीका जानना चाहता हूं .. लेकिन मुझे नहीं लगता कि इस समस्या को वास्तव में एक्सएएमएल के साथ हल किया जा सकता है। आपको अपने कोड में कुछ प्रकार के संदर्भ की आवश्यकता होगी, इसलिए सबसे आसान तरीका केवल सीधे देना है;) – Arcturus