wpf DataGridTemplateColumn.CellTemplate如何启用/禁用复选框

时间:2018-10-26 14:48:14

标签: c# wpf checkbox datagrid datatrigger

我有一个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属性,但是它不起作用。

我在Google上搜索并找到了一些有关Multidatatriggers的主题,但不了解它们如何工作。

1 个答案:

答案 0 :(得分:1)

如果Style返回DataTrigger,则可以将CheckBoxIsSelected一起使用来禁用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>