在我的UWP应用程序中,我有一个场景,其中有多个页面,它们构成ListView以显示数据,并且每个页面都有自己的DataTemplate基于要显示的内容,现在ListView和DataTemplate的样式/颜色每个页面都是一样的,所以问题是每当我需要更改DataTemplate中的任何样式时,比如设置边框我需要在每个页面上执行此操作,那么如何为数据模板创建一个通用的UI,但是使用不同的数据显示并将其分配给ListView,我尝试使用listview创建UserControl,但我不知道如何将Datatemplate传递给该列表视图。
这是我在第一级尝试的内容:
为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。
答案 0 :(得分:1)
<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>