【发布时间】:2016-09-03 23:13:41
【问题描述】:
在我的 UWP 应用程序中,我有一个场景,其中有多个页面,其中包含 ListView 来显示数据,并且每个页面都有自己的 DataTemplate 基于要显示的内容,现在 ListView 和 DataTemplate 的样式/颜色在每个页面都是相同的,所以问题是每当我需要更改 DataTemplate 中的任何样式时,例如设置边框,我需要在每个页面上进行此操作,所以我怎样才能为数据模板制作一个通用 UI 但具有不同的数据显示并将其分配给 ListView,我尝试使用列表视图创建 UserControl,但我不知道如何将 Datatemplate 传递给该列表视图。
这是我在第一级尝试过的:
为 DataTemplate 创建用户控件和依赖属性: 用户控件 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">
人物页面,我正在使用这个 UserControl:
<controls:ListViewControl x:Name="MyListView"
Grid.Row="1"
DisplayItemTemplate="{StaticResource MyListDataTemplate}" />
问题是 MyListDataTemplate 没有在 DisplayListView 中设置为 DataTemplate。
【问题讨论】:
-
将 app.xaml 中的数据模板定义为应用资源
-
在这种情况下,您必须对事件处理程序使用命令或行为,因为您不能将事件处理程序放在 app.xaml.cs 中
-
你是如何使用 Usercontrol 的?请发布完整代码
-
我已经在“UserControl Caller”部分提到过。
-
对不起,我不太明白,你能详细说明一下吗?
标签: c# xaml win-universal-app