首页 > 解决方案 > DataGrid isReadyOnly 无法正常工作

问题描述

我有一个 dataGridisReadOnly设置为true. 在该数据网格中,我有多个列(DataGridTemplateColumn),我面临的问题是这一列:

<DataGridTemplateColumn IsReadOnly="True" SortMemberPath="OnVacation" Header="En vacance" >                                               <DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
<CheckBox  VerticalAlignment="Center"  IsChecked="{Binding Path=OnVacation, Mode=TwoWay}"  />
    </DataTemplate>
  </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

我还设置sReadyOnly了列本身(如您在上面看到的),但这没有做任何事情。我仍然可以选中/取消选中复选框,它会改变。

标签: c#wpfxaml

解决方案


如果您永久希望用户无法更改复选框,那么您可以使用

1.IsEnabled="假"

<DataGridTemplateColumn IsReadOnly="True" SortMemberPath="OnVacation" Header="En vacance" >
 <DataGridTemplateColumn.CellTemplate>
  <DataTemplate>
   <CheckBox  VerticalAlignment="Center"  IsChecked="{Binding Path=OnVacation, 
   Mode=TwoWay}" IsEnabled="False"  />
  </DataTemplate>
 </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

2. IsHitTestVisible="假"

<DataGridTemplateColumn IsReadOnly="True" SortMemberPath="OnVacation" Header="En vacance">
                                <DataGridTemplateColumn.CellTemplate>
                                    <DataTemplate>
                                        <CheckBox  VerticalAlignment="Center"  IsChecked="{Binding Path=OnVacation, Mode=TwoWay}" IsHitTestVisible="False">
                                        </CheckBox>
                                    </DataTemplate>
                                </DataGridTemplateColumn.CellTemplate>
                            </DataGridTemplateColumn>

推荐阅读