在<Window.Resources>
下,我定义了以下样式:
<Style TargetType="TextBox">
<Setter Property="Height" Value="22" />
<Setter Property="Width" Value="125" />
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="VerticalAlignment" Value="Top" />
<Setter Property="Foreground" Value="Black" />
<Setter Property="Background" Value="WhiteSmoke" />
</Style>
它工作正常,直到我需要继承另一种风格的风格
<Style BasedOn="{StaticResource TextBoxStyle}" TargetType="{x:Type PasswordBox}">
这意味着我需要将x:Key=TextBoxStyle
添加到上面的文本框样式
但是当我这样做时,文本框的样式完全破坏了
我尝试对Button样式做同样的事情,同样的事情发生了,如果我添加一个键就会破坏样式。
我想到的唯一解决方案是单独为元素添加样式,但这就是我不想做的事情。
答案 0 :(得分:2)
不,您无需添加x:Key
来引用它:
<Style BasedOn="{StaticResource {x:Type TextBox}}" TargetType="{x:Type PasswordBox}">
答案 1 :(得分:0)
为了提供更好的可理解性和维护性,我希望采用以下方法。恕我直言,如果将瑕疵减少到最低限度,另一位程序员可以更好地进入代码。
<Style x:Key="BasicTextBoxStyle" TargetType="{x:Type TextBox}">
<!--some settings here-->
</Style>
<!--Declare BasicTextBoxStyle as default style for TextBoxes-->
<Style BasedOn="{StaticResource BasicTextBoxStyle}" TargetType="{x:Type TextBox}"/>
<!--Create some special style based on the basic style-->
<Style BasedOn="{StaticResource BasicTextBoxStyle}" TargetType="{x:Type PasswordBox}">
<!--some more specific settings-->
</Style>
只是我的两分钱......