Xaml 如何仅重写controltemplate的一个属性?

Xaml 如何仅重写controltemplate的一个属性?,xaml,listview,microsoft-metro,controltemplate,Xaml,Listview,Microsoft Metro,Controltemplate,我正在尝试覆盖Windows应用商店应用程序中ListViewItemPresenter的padding属性。 当我复制完整的通用ListView样式、更改填充并将该样式作为ItemContainerStyle应用到我的ListView时,一切都正常 现在我需要为另一个ListView执行此操作。如何仅覆盖ListViewItemPresenter控件模板的一个属性而不重新复制整个样式?我找到的最佳解决方案来自下面的链接。我把答案复制粘贴在下面 其想法是将完整的Windows10样式复制到字典中

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


现在我需要为另一个ListView执行此操作。如何仅覆盖ListViewItemPresenter控件模板的一个属性而不重新复制整个样式?

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

其想法是将完整的Windows10样式复制到字典中,并给它一个键。您不需要修改样式,只需复制一次即可。(尽管比理想情况下更应该这样做。)由于它现在有一个键,您可以创建另一个“基于”该键的样式并对其进行修改

[

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

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

...
然后,创建从该样式继承的另一个样式

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

</Style>

可以在此处找到默认样式 [ 或者在您的计算机上的某个位置,如 C:\Program Files(x86)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP\10.0.10586.0\Generic\Generic.xaml