请找到以下用于在键盘焦点上设置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(复选框不是数据网格的一部分,而是同一视图中的控件)
请帮我实现这个目标..
答案 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
。