wpf DataGridTemplateColumn.CellTemplate как включить / отключить флажки - PullRequest
0 голосов
/ 26 октября 2018

У меня есть DataGrid с DataGridTemplateColumn.CellTemplate, определенным так:

<DataGridTemplateColumn>
     <DataGridTemplateColumn.Header>
          <CheckBox ToolTip="Select all items" 
            IsChecked="{Binding IsSelected}" Name="chkSelectAll" Checked="AllItem_Checked"
            Unchecked="UnCheckAll_UnChecked" IsHitTestVisible="{Binding Path=IsSelected}"/>
     </DataGridTemplateColumn.Header>
     <DataGridTemplateColumn.CellTemplate>                                        
        <DataTemplate>
             <CheckBox HorizontalAlignment="Center" Checked="Item_Checked" Unchecked="Item_UnChecked"
                IsChecked="{Binding IsSelected}" IsHitTestVisible="{Binding Path=IsSelected}" />                                        
       </DataTemplate>
     </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

Сетка имеет привязку со списком объектов.

Я хочу, чтобы для каждого объекта в ItemsSource этот флажок был доступен только для чтения, если атрибут IsSelected имеет значение true.

Я не знаю, как это кодировать; Я пытался связать свойство IsHitTestVisible с атрибутом IsSelected ItemsSource Objects, но оно не работает.

Я погуглил и нашел несколько тем о мультидатригерах, но не могу понять, как они работают.

1 Ответ

0 голосов
/ 26 октября 2018

Вы можете использовать Style с DataTrigger, который отключает CheckBox, если IsSelected возвращает true:

<CheckBox HorizontalAlignment="Center" Checked="Item_Checked" Unchecked="Item_UnChecked" IsChecked="{Binding IsSelected}">
    <CheckBox.Style>
        <Style TargetType="CheckBox">
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsSelected}" Value="True">
                    <Setter Property="IsEnabled" Value="False" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </CheckBox.Style>
</CheckBox>
...