如何将不同的DataTemplate应用于Listview



在我的UWP应用程序中,我有一个场景,其中有多个页面,这些页面使用ListView来显示数据,每个页面都有自己的基于要显示内容的DataTemplate,现在每个页面上ListView和DataTemplate的样式/颜色都是相同的,所以问题是每当我需要更改DataTemplate内部的任何样式时,就像设置边框一样,我需要在每一页上都这样做,所以我如何为数据模板制作一个通用的UI,但要显示不同的数据,然后将其分配给ListView,我试图用ListView创建UserControl,但我不知道如何将Datatemplate传递给该ListView。

以下是我在第一级尝试的内容:

为DataTemplate创建用户控件和依赖项属性:UserControl CS文件:

  public DataTemplate DisplayItemTemplate
    {
        get { return (DataTemplate)GetValue(DisplayItemTemplateProperty); }
        set { SetValue(DisplayItemTemplateProperty, value); }
    }
    public static readonly DependencyProperty DisplayItemTemplateProperty =
            DependencyProperty.Register("DisplayItemTemplate", typeof(DataTemplate), typeof(ListViewControl), new PropertyMetadata(null));

UserControl Xaml文件:

 <ListView x:Name="DisplayListView"
                      IsItemClickEnabled="True"
                      ItemsSource="{Binding}"
                      ItemTemplate="{Binding DisplayItemTemplate, Mode=OneWay}"
                      ItemContainerStyle="{StaticResourceListViewItemExpandedStyle}"
                      ItemClick="DisplayListView_ItemClick">

PeoplePage,我在这里使用这个UserControl:

  <controls:ListViewControl x:Name="MyListView"
                              Grid.Row="1"
                              DisplayItemTemplate="{StaticResource MyListDataTemplate}" />

问题是MyListDataTemplate没有在DisplayListView中设置为DataTemplate。

<UserControl x:Name="userControl"> 
...
<ListView x:Name="DisplayListView"
                      IsItemClickEnabled="True"
                      ItemsSource="{Binding}"
                      ItemTemplate="{Binding DisplayItemTemplate,ElementName=userControl,Mode=OneWay}"
                      ItemContainerStyle="{StaticResourceListViewItemExpandedStyle}"
                      ItemClick="DisplayListView_ItemClick">
...
</UserControl>

最新更新