wpf DataGridTemplateColumn.CellTemplate如何启用/禁用复选框 [英] wpf DataGridTemplateColumn.CellTemplate how to enable/disable checkboxes

查看:130
本文介绍了wpf DataGridTemplateColumn.CellTemplate如何启用/禁用复选框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个带有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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆