79

如何在 Silverlight 中基于默认样式创建样式?

例如,在 WPF 中,我们将其设为:

<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
  <Setter Property="Margin" Value="2" />
  <Setter Property="Padding" Value="2" />
</Style>
4

4 回答 4

38

几乎相同的。只需减去x:Type具有更明确命名的 。

<Style TargetType="TextBox" BasedOn="{StaticResource DefaultTextBoxStyle}">

文档中的更多信息。PS,如果您需要默认模板,例如 TextBox 通常可以在 CoreStyles.xaml 中找到

如果您在第一次阅读答案时感到困惑,请按照评论中的要求进行附录;

您确实需要一个基本样式,这很容易做到,因为您打算在默认情况下(wpf/uwp 等没有这些)创建像 ToolkitStyles.xaml 这样的文件的应用程序主题中做到这一点、SDKStyles.xaml、CoreStyles.xaml 等...答案中的静态资源名称来自哪里,因为它针对的是最初回答该问题的那一年的 silverlight 版本。”

于 2012-10-22T19:19:17.780 回答
23

仅适用于 Silverlight

要根据默认样式创建样式,需要先创建命名样式,然后根据命名样式制作默认样式(http://weblogs.asp.net/lduveau/silverlight-how-to-inherit-from -an-implicit-style )

<Style x:Key="DefaultCustomControlStyle" TargetType="local:CustomControl">
    <Setter Property="Padding" Value="2" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="local:CustomControl">
                <ContentPresenter />
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
<Style TargetType="local:CustomControl" BasedOn="{StaticResource DefaultCustomControlStyle}" />

如果您使用的是 WPF,则改用原始问题中的代码要简单得多。

于 2014-08-11T13:48:14.883 回答
17

我建议你看看: https ://justinmchase.com/2009/05/29/derived-styles-based-on-unnamed-default-styles/ 它会像你这样:

<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
于 2020-11-12T17:21:20.153 回答
-3

如果我理解正确,您正在寻找 OverridesDefaultStyle

<Style TargetType="{x:Type TextBox}">
      <Setter Property="OverridesDefaultStyle" Value="False" />
      <Setter Property="Margin" Value="2" />
      <Setter Property="Padding" Value="2" />
</Style>
于 2019-05-13T22:29:18.937 回答