我在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
集成为默认值,并允许在控件的不同实现上更改它。
这里是如何在CustomGridView.cs文件中定义ItemTemplate
属性:
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?我错过了什么吗?
如有必要,我会提供额外的代码。
非常感谢!
答案 0 :(得分:-1)
您必须包含以下代码:
[assembly: ThemeInfo(ResourceDictionaryLocation.SourceAssembly, ResourceDictionaryLocation.SourceAssembly)]
到AssemblyInfo.cs文件