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 对象属性,但它不起作用。
我用谷歌搜索并找到了一些关于多数据触发器的主题,但不明白它们是如何工作的。
您可以使用 Style
和 DataTrigger
来禁用 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>
我有一个 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 对象属性,但它不起作用。
我用谷歌搜索并找到了一些关于多数据触发器的主题,但不明白它们是如何工作的。
您可以使用 Style
和 DataTrigger
来禁用 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>