wpf DataGridTemplateColumn.CellTemplate 如何 enable/disable 复选框

wpf DataGridTemplateColumn.CellTemplate how to enable/disable checkboxes

我有一个 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 属性为真,则复选框是只读的。

我不知道如何编码;我尝试将 IsHitTestVisible 属性 绑定到 IsSelected ItemsSource 对象属性,但它不起作用。

我用谷歌搜索并找到了一些关于多数据触发器的主题,但不明白它们是如何工作的。

您可以使用 StyleDataTrigger 来禁用 CheckBox if IsSelected returns 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>