我应该如何基于复选框IsChecked属性设置DataGrid单元格的边框

时间:2015-10-12 22:32:26

标签: wpf

请找到以下用于在键盘焦点上设置DataGridCell边框的样式。

   <Style x:Key="DynamciEditableDataGridCellStyle" TargetType="{x:Type DataGridCell}" BasedOn="{StaticResource DefaultDataGridCellStyle}">
        <Style.Triggers>
            <MultiTrigger>
                <MultiTrigger.Conditions>
                    <Condition Property="IsKeyboardFocusWithin" Value="True"/>
                  <!--How to add another condition which checks on the check box IsChecked property-->
                </MultiTrigger.Conditions>
                <MultiTrigger.Setters>
                    <Setter Property="Border.BorderThickness" Value="3"/>
                    <Setter Property="Border.BorderBrush" Value="{DynamicResource ActiveInputBorderBrush}"/>
                </MultiTrigger.Setters>
            </MultiTrigger>
            <Trigger Property="IsSelected" Value="False">
                <Setter Property="Background" Value="{DynamicResource EditableBackgroundBrush}"/>
            </Trigger>
        </Style.Triggers>
    </Style>

我需要有两个条件来设置边框粗细和边框画笔.......

1)在单元格内的KeyboardFocus上(这是按照上面的代码工作)

2)复选框IsChecked属性为True(复选框不是数据网格的一部分,而是同一视图中的控件)

请帮我实现这个目标..

1 个答案:

答案 0 :(得分:0)

由于您的问题中没有包含CheckBox的XAML,我认为它已指定了名称,因此您可以使用MultiDataTrigger代替MultiTrigger,以便您可以使用Binding听取其他元素的任何属性变化:

<Style.Triggers>
        <MultiDataTrigger>
            <MultiDataTrigger.Conditions>
                <Condition Binding="{Binding IsKeyboardFocusWithin, RelativeSource={RelativeSource Self}}" Value="True"/>
                <Condition Binding="{Binding IsChecked, ElementName=checkBox}" Value="True"/>
            </MultiDataTrigger.Conditions>
            <MultiDataTrigger.Setters>
                <Setter Property="Border.BorderThickness" Value="3"/>
                <Setter Property="Border.BorderBrush" Value="{DynamicResource ActiveInputBorderBrush}"/>
            </MultiDataTrigger.Setters>
        </MultiDataTrigger>
        <Trigger Property="IsSelected" Value="False">
            <Setter Property="Background" Value="{DynamicResource EditableBackgroundBrush}"/>
        </Trigger>
</Style.Triggers>

我认为您的CheckBox名称为checkBox