小编Cle*_*y25的帖子

Windows 10 UWP应用程序中的ItemsControl和ItemTemplateSelector

我很久以前做过一些WPF编程,但我只是回到xaml与UWP,但我认为这应该工作,不知道为什么.基本上我想使用ItemsControl(因为我只想列出一些数据,我不想选择)而不是ListView控件.这是我的资源:

<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>
Run Code Online (Sandbox Code Playgroud)

这是我的ItemsControl:

<ItemsControl ItemsSource="{Binding Messages}" ItemTemplateSelector="{StaticResource MessageDataTemplateSelector}" />
Run Code Online (Sandbox Code Playgroud)

这是我的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;
    }
}
Run Code Online (Sandbox Code Playgroud)

它不是显示我的任何模板,而是显示我的ViewModel类型名称(所以基本上是ToString).

但是,如果我将它从ItemsControl切换到ListView,它工作正常.

有什么建议?

c# xaml win-universal-app uwp

10
推荐指数
2
解决办法
6421
查看次数

标签 统计

c# ×1

uwp ×1

win-universal-app ×1

xaml ×1