当对象绑定到其他对象时,样式触发器不起作用

时间:2012-02-06 21:12:17

标签: wpf styles

我遇到了一些绑定到一组单选按钮的项目样式的问题。基本上,我的样式有以下代码:

<Window.Resources>
    <Style x:Key="boxStyle" TargetType="TextBox">
        <Setter Property="Background" Value="Black"/>
        <Style.Triggers>
            <Trigger Property="IsEnabled" Value="False">
                <Setter Property="Background" Value="Blue"/>
            </Trigger>
        </Style.Triggers>
    </Style>
</Window.Resources>

然后我有两个单选按钮,如下所示:

<RadioButton Name="optionA" IsChecked="True">Option A</RadioButton>
<RadioButton Name="optionB'>Option B</RadioButton>

此处显示两个文本框:

<TextBox Style="{StaticResource boxStyle}" IsEnabled="{Binding ElementName=optionA, Path=IsChecked}"/>
<TextBox Style="{StaticResource boxStyle}" IsEnabled="{Binding ElementName=optionB, Path=IsChecked}"/>

绑定正常工作(选中选项A时,启用一个框,另一个框不启用)。但是,当其中任何一个框被禁用时,它不符合上面定义的样式。无论我将样式颜色更改为什么,背景都会变为白色。

有人有什么想法吗?感谢。

1 个答案:

答案 0 :(得分:0)

据我所知,禁用时使用的颜色在模板中是硬编码的,除非它引用系统颜色,否则您无法轻易更改它,在这种情况下您可以覆盖。

默认的Aero主题使用ListBoxChrome控件,不确定是否可以相应地更改其背景,它没有模板,因此可能很难修改它。你当然可以把它扔掉并使用你想要的任何东西(你可以修改)。