wpf DataGridTemplateColumn.CellTemplate如何启用/禁用复选框 [英] wpf DataGridTemplateColumn.CellTemplate how to enable/disable checkboxes
问题描述
我有一个带有DataGridTemplateColumn.CellTemplate的`DataGrid`,其定义如下:
I have a `DataGrid` with DataGridTemplateColumn.CellTemplate defined like this :
<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>
网格与对象列表绑定。
The grid has a binding with a list of objects.
我希望,为ItemsSource的每个对象,如果 IsSelected
attribut 为真
CHECKBOX BECOME IsReadOnly (无法选中或取消选中。
I want that, for each object of ItemsSource, if IsSelected attribut is TRUE the CHECKBOX BECOME IsReadOnly (can't be checked or uncheck.
我不知道如何执行此操作;我尝试将IsHitTestVisible属性绑定到IsSelected ItemsSource Objects attribut,但它无效。
我用Google搜索并找到了一些关于Multidatatriggers的主题,但无法理解它是如何工作的。
I googled about and found some topics about Multidatatriggers but can't understand how it's work.
有人可以帮助我吗?我是WPF新手。
Can someone help me ? I'm new with WPF.
谢谢你。
推荐答案
<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>
网格与对象列表绑定。
The grid has a binding with a list of objects.
我希望,为ItemsSource的每个对象,如果 IsSelected
attribut 为真
CHECKBOX BECOME IsReadOnly (无法选中或取消选中。
I want that, for each object of ItemsSource, if IsSelected attribut is TRUE the CHECKBOX BECOME IsReadOnly (can't be checked or uncheck.
我不知道如何执行此操作;我尝试将IsHitTestVisible属性绑定到IsSelected ItemsSource Objects attribut,但它无效。
嗨 thekindom,
您可以将IsSelected属性绑定到IsEnabled属性并使用转换器。
您可以参考以下代码。
Hi thekindom,
You can bind the IsSelected attribute to the IsEnabled property and use a converter.
You can refer the following code.
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="chkName" IsChecked="{Binding IsChecked , UpdateSourceTrigger=PropertyChanged}" IsEnabled="{Binding IsChecked,Converter={StaticResource cvtDate}}" >
</CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
public class Checkboxconvert : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null)
return DependencyProperty.UnsetValue;
bool result = (bool)value;
if(result)
{
return false;
}else
{
return true;
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
这篇关于wpf DataGridTemplateColumn.CellTemplate如何启用/禁用复选框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!