[英]Applying default style in templated control from Generic.xaml
我已经在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>
目标是使ItemTemplate
中的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吗? 我有什么想念的吗?
如有必要,我将提供其他代码。
非常感谢你!
您必须包含以下代码:
[assembly: ThemeInfo(ResourceDictionaryLocation.SourceAssembly, ResourceDictionaryLocation.SourceAssembly)]
到您的AssemblyInfo.cs文件
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.