如何在Silverlight中基于默认样式创建样式?
例如,在WPF中,我们将其设置为:
<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
<Setter Property="Margin" Value="2" />
<Setter Property="Padding" Value="2" />
</Style>
Answers:
基本上一样。x:Type
用更明确的命名来减去即可。
<Style TargetType="TextBox" BasedOn="{StaticResource DefaultTextBoxStyle}">
在docs中有更多信息。PS,如果您需要默认模板,通常可以在CoreStyles.xaml中找到例如TextBox
如果您在初读答案时感到困惑,请按照评论中的要求添加;
“您确实需要一个基本样式,这真的很容易做到,因为您打算在默认情况下在Silverlight提供的应用程序主题中创建基本样式(wpf / uwp等不会包含这些样式)来创建类似ToolkitStyles.xaml的文件,SDKStyles.xaml,CoreStyles.xaml等...答案中的staticresource名称来自最初针对该答案的年份的Silverlight版本。”
仅针对Silverlight:
要基于默认样式创建样式,您需要创建一个命名样式,然后根据命名样式创建默认样式(http://weblogs.asp.net/lduveau/silverlight-how-to-inherit-from -隐式样式)
<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}}">