繁体   English   中英

WPF datagrid IsReadOnly异常

[英]WPF datagrid IsReadOnly exception

我有一个datagrid,我在其中添加了Checkbox列。 我希望整个Datagrid都是IsReadOnly,而不是Checkbox列。 我努力了:

  <DataGrid x:Name="DataGridView_Customer_Information" HorizontalAlignment="Left" Margin="10,200,0,0" VerticalAlignment="Top" Height="410" Width="697" CanUserAddRows="False" IsReadOnly="True" >
        <DataGrid.Columns>
            <DataGridCheckBoxColumn x:Name="CheckBoxSelectRow" IsReadOnly="False"/>
        </DataGrid.Columns>
    </DataGrid>

但是我可以想象, <DataGridCheckBoxColumn x:Name="CheckBoxSelectRow" IsReadOnly="False"/>被上一条语句否决了。 由于其只有一栏需要允许编辑(允许选中该复选框),是否可以在IsReadOnly中做出期望?

提前致谢

您有两个选择。 两者都假定DataGrid.AutoGenerateColumnsFalse

  1. DataGrid元素中删除IsReadOnly="True"并为每列设置IsReadOnly :对于DataGridCheckBoxColumnFalse ,对于其余DataGridCheckBoxColumn True

  2. 离开IsReadOnly="True"DataGrid原样,而不是DataGridCheckBoxColumn添加DataGridTemplateColumnCheckBox内的模板:

     <DataGrid IsReadOnly="True" AutoGenerateColumns="False" ItemsSource="{Binding Guests}"> <DataGrid.Columns> <DataGridTemplateColumn Header="Is invited"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <CheckBox IsChecked="{Binding IsInvited}"/> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTextColumn Header="Name" Binding="{Binding Name}" IsReadOnly="False"/> </DataGrid.Columns> </DataGrid> 

第二种方法还有另一个好处。 DataGridCheckBoxColumn默认行为很奇怪-要更改选中标记,您需要先选择单元格,这不方便。 DataGridTemplateColumn CheckBox接受用户输入而无需选择单元格,这看起来很自然。

您可以将其他列IsReadOnly设置为false

更新

或者您可以添加到DataGrid.Resources其他列的样式

<DataGrid.Resources>
    <Style TargetType="{x:Type DataGridTextColumn}">
        <Setter Property="IsReadOnly" Value="True" />
    </Style>
</DataGrid.Resources>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM