【问题标题】:How can I override just one property of a controltemplate?如何仅覆盖控件模板的一个属性?
【发布时间】:2014-08-25 11:41:19
【问题描述】:

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

现在我需要为另一个 ListView 执行此操作。如何仅覆盖 ListViewItemPresenter ControlTemplate 的一个属性,而无需重新复制完整的样式?

【问题讨论】:

    标签: xaml listview microsoft-metro controltemplate


    【解决方案1】:

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

    我们的想法是将完整的 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-29
      • 2020-05-16
      • 1970-01-01
      • 2015-05-04
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多