मैंने बहुत समय पहले एक छोटा डब्ल्यूपीएफ प्रोग्रामिंग किया था, लेकिन मैं सिर्फ यूडब्लूपी के साथ एक्सएमएल पर लौट रहा हूं, लेकिन मुझे लगता है कि यह काम करना चाहिए और क्यों नहीं समझ सकता। मूल रूप से मैं ListView नियंत्रण के बजाय आइटम्स कंट्रोल (क्योंकि मैं बस कुछ डेटा सूचीबद्ध करना चाहता हूं, मैं चयन नहीं चाहता हूं) का उपयोग करना चाहता हूं। यहाँ मेरी संसाधन हैं:विंडोज 10 यूडब्ल्यूपी ऐप में आइटम कंट्रोल और आइटम टेम्पलेट चयनकर्ता
<Page.Resources>
<DataTemplate x:Key="SentMessageDataTemplate">
<TextBlock Text="Sent" />
</DataTemplate>
<DataTemplate x:Key="ReceivedMessageDataTemplate">
<TextBlock Text="Recieved" />
</DataTemplate>
<services:MessageDataTemplateSelector x:Key="MessageDataTemplateSelector" ReceivedTemplate="{StaticResource ReceivedMessageDataTemplate}" SentTemplate="{StaticResource SentMessageDataTemplate}"></services:MessageDataTemplateSelector>
</Page.Resources>
यहाँ मेरी ItemsControl है:
<ItemsControl ItemsSource="{Binding Messages}" ItemTemplateSelector="{StaticResource MessageDataTemplateSelector}" />
यहाँ मेरी DataTemplateSelector है:
public class MessageDataTemplateSelector : DataTemplateSelector
{
public DataTemplate SentTemplate
{
get;
set;
}
public DataTemplate ReceivedTemplate
{
get;
set;
}
protected override DataTemplate SelectTemplateCore(object item)
{
var message = item as MessageViewModel;
if (message == null)
{
return this.SentTemplate;
}
return message.Sent ? this.SentTemplate : this.ReceivedTemplate;
}
}
के बजाय मेरे टेम्पलेट के दोनों प्रदर्शित यह सिर्फ मेरी ViewModel प्रकार नाम प्रदर्शित करता है (इसलिए मूल रूप से ToString)।
हालांकि अगर मैं इसे आइटम नियंत्रण से ListView में स्विच करता हूं, तो यह ठीक काम करता है।
कोई सुझाव?
हाल ही में मेरे ऐप्स में से एक में एक ही समस्या थी! आश्चर्य है कि यह सुलभ है ... – Depechie