私は少し前にWPFプログラミングをやったことがありますが、私はUWPでxamlに戻っていますが、これはうまくいくと思います。基本的には、ListViewコントロールではなく、ItemsControlを使用したい(一部のデータをリストしたいので、選択したくないため)。ここに私の資源である:ここではItemsControl and ItemTemplateSelector in Windows 10 UWPアプリケーション
<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)。
ただし、ItemsControlからListViewに切り替えると正常に動作します。
提案がありますか?
最近私のアプリの同じ問題がありました!これが解けるかどうかわかりません... – Depechie