2015-10-12 3 views
0

Пожалуйста, найдите ниже стиль, который я использую, чтобы установить границу DataGridCell в фокусе клавиатуры.Как установить границу ячейки DataGrid на основе флажка IsChecked Property

<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) на CheckBox IsChecked собственности True (флажок не является частью DataGrid, но контроль внутри одной и той же точки зрения)

пожалуйста, помогите мне в достижении этой цели ..

ответ

0

Потому что вы не включаете XAML вашего CheckBox в вашем вопросе, я предполагаю, что у него есть имя, заданное, то вы можете использовать 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.