如何在 Silverlight 中基于默认样式创建样式?
例如,在 WPF 中,我们将其设为:
<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
<Setter Property="Margin" Value="2" />
<Setter Property="Padding" Value="2" />
</Style>
如何在 Silverlight 中基于默认样式创建样式?
例如,在 WPF 中,我们将其设为:
<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
<Setter Property="Margin" Value="2" />
<Setter Property="Padding" Value="2" />
</Style>
几乎相同的。只需减去x:Type
具有更明确命名的 。
<Style TargetType="TextBox" BasedOn="{StaticResource DefaultTextBoxStyle}">
文档中的更多信息。PS,如果您需要默认模板,例如 TextBox 通常可以在 CoreStyles.xaml 中找到
如果您在第一次阅读答案时感到困惑,请按照评论中的要求进行附录;
“您确实需要一个基本样式,这很容易做到,因为您打算在默认情况下(wpf/uwp 等没有这些)创建像 ToolkitStyles.xaml 这样的文件的应用程序主题中做到这一点、SDKStyles.xaml、CoreStyles.xaml 等...答案中的静态资源名称来自哪里,因为它针对的是最初回答该问题的那一年的 silverlight 版本。”
仅适用于 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,则改用原始问题中的代码要简单得多。
我建议你看看: https ://justinmchase.com/2009/05/29/derived-styles-based-on-unnamed-default-styles/ 它会像你这样:
<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
如果我理解正确,您正在寻找 OverridesDefaultStyle
<Style TargetType="{x:Type TextBox}">
<Setter Property="OverridesDefaultStyle" Value="False" />
<Setter Property="Margin" Value="2" />
<Setter Property="Padding" Value="2" />
</Style>