【发布时间】:2016-10-16 23:16:31
【问题描述】:
我在 WinRT/UWP 中创建了一个模板化控件,其中包含一个 GridView。我创建了一个 ItemTemplate 依赖属性,它将容纳网格视图项目的DataTemplate,这样当控件在其他页面上重新使用时,我可以灵活地更改项目模板在每个实现中。
但是,使用我拥有的当前代码,它可以正确加载控件但未实现样式。
这是我的 Generic.xaml 代码:
<Style TargetType="ctrl:CustomGridView">
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<Grid>
<Grid Background="Red">
<TextBlock Text="{Binding Name, Mode=OneWay}" Foreground="White" TextAlignment="Center"/>
</Grid>
</Grid>
</DataTemplate>
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ctrl:CustomGridView">
<Grid>
<ContentPresenter x:Name="templateProxy" Width="{TemplateBinding ItemWidth}" Height="{TemplateBinding ItemHeight}" ContentTemplate="{TemplateBinding ItemTemplate}" Visibility="Collapsed" />
<GridView x:Name="gridView" ItemsSource="{TemplateBinding ItemsSource}"
SelectionMode="None" IsItemClickEnabled="True" IsSwipeEnabled="False" IsTabStop="False">
<GridView.ItemTemplate>
<DataTemplate>
<ContentPresenter Width="{Binding Width, ElementName=templateProxy}" Height="{Binding Height, ElementName=templateProxy}" ContentTemplate="{TemplateBinding ItemTemplate}" />
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
目标是使 Generic.xaml 中的ItemTemplate 设置为默认设置,并允许在控件的不同实现上更改它。
下面是 ItemTemplate 属性在 CustomGridView.cs 文件中的定义方式:
public static readonly DependencyProperty ItemTemplateProperty =
DependencyProperty.Register("ItemTemplate", typeof(DataTemplate), typeof(PatientGridView), new PropertyMetadata(null));
public DataTemplate ItemTemplate
{
get { return (DataTemplate)GetValue(ItemTemplateProperty); }
set { SetValue(ItemTemplateProperty, value); }
}
我应该在 CustomGridView.cs 中做些什么来加载默认的 ItemTemplate?我错过了什么吗?
如有必要,我会提供额外的代码。
非常感谢!
【问题讨论】:
标签: c# xaml windows-runtime windows-10 uwp