在我的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>