0

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

我想到的唯一解决方案是将样式单独添加到元素中,但这是我试图不这样做的。

4

2 回答 2

2

不,您无需添加x:Key即可引用它:

<Style BasedOn="{StaticResource {x:Type TextBox}}" TargetType="{x:Type PasswordBox}">
于 2013-05-13T04:24:49.320 回答
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>

就我的两分钱...

于 2013-05-13T07:38:41.170 回答