添加x:Key时样式中断

时间:2013-05-13 04:19:43

标签: wpf xaml

<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样式做同样的事情,同样的事情发生了,如果我添加一个键就会破坏样式。

我想到的唯一解决方案是单独为元素添加样式,但这就是我不想做的事情。

2 个答案:

答案 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>

只是我的两分钱......