将ListBox Borderbrush属性链接到IsEnabled按钮

时间:2015-08-19 18:47:33

标签: c# wpf xaml colors listbox

我有两个TextBoxes,两个ListBoxes,一个Cancel按钮和一个OK按钮。

简化问题,我想将第二个Borderbrush的{​​{1}}的颜色与ListBox按钮的IsEnabled属性相关联。

替代方案是将颜色更改为OK背景而不是ListBoxItem边框本身的链接。

是否可能(可能通过Listbox或其他内容)?如果是这样,你能告诉我的方式吗?

窗口的XAML如下:

Triggers

1 个答案:

答案 0 :(得分:1)

这是一个基于按钮的IsEnabled属性更改列表视图的边框画笔的小示例

<StackPanel>
    <ListBox Height="100">
        <ListBox.Style>
            <Style TargetType="ListBox">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=okButton, Path=IsEnabled}" Value="false">
                        <Setter Property="BorderBrush" Value="Red"/>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding ElementName=okButton, Path=IsEnabled}" Value="true">
                        <Setter Property="BorderBrush" Value="Blue"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </ListBox.Style>
    </ListBox>
    <Button IsEnabled="True" Name="okButton">true</Button>
</StackPanel>

但我会在命令上设置按钮的可用性,而不是在XAML中,我也会将ListView的颜色绑定到ViewModel中的IsValid属性。