我怎样才能覆盖controltemplate的一个属性?

时间:2014-07-04 07:42:50

标签: xaml listview microsoft-metro controltemplate

我正在尝试覆盖Windows应用商店应用中ListViewItemPresenter的padding属性。 当我复制完整的通用ListView样式,更改填充并将该样式作为ItemContainerStyle应用于我的ListView时,一切正常。

现在我需要为另一个ListView执行此操作。如何只重写ListViewItemPresenter ControlTemplate的一个属性而不再重复整个样式?

1 个答案:

答案 0 :(得分:0)

我找到的最佳解决方案来自以下链接。我复制粘贴下面的答案。

我们的想法是将完整的Windows 10样式复制到您的字典中并为其提供密钥。您不需要修改样式,只需复制一次即可。 (虽然理想情况下你应该不得不这么做。)因为它现在有一把钥匙,你可以创造另一种风格" BasedOn"那把钥匙并修改它。

[https://social.msdn.microsoft.com/Forums/en-US/d3c1f120-b11f-4d14-b45c-7bdf3e9233be/inheriting-a-default-application-style-xaml?forum=winappswithcsharp][1]

首先,在App.xaml级别资源字典中为控件创建默认样式,但是给它一个x:Key

<Style x:Key="ButtonDefaultStyle" TargetType="Button">
    ...
</Style>

然后,创建另一种继承此样式的样式。

<Style x:Key="MyButtonStyle" TargetType="Button" BasedOn="{StaticResource ButtonDefaultStyle}" />

</Style>

可以在此处找到默认样式 [https://msdn.microsoft.com/en-us/library/windows/apps/mt299122.aspx] 或者在您的计算机上的某个位置 C:\ Program Files(x86)\ Windows Kits \ 10 \ DesignTime \ CommonConfiguration \ Neutral \ UAP \ 10.0.10586.0 \ Generic \ generic.xaml