如何禁用WPF Datagrid中的单元格编辑?


116

我正在Windows Presentation Foundation中构建一个数据网格,但是我遇到了问题。当用户双击我的数据网格中的一个单元格时,该单元格将进入编辑模式。我想防止这种情况。相反,我希望用户能够选择整行-而不是在其中编辑值。

我该如何做到使双击选择整行,而不是将单击的单元格置于编辑模式?

Answers:


254

您可以设置WPF DataGridIsReadOnly属性,True以确保用户无法编辑您DataGrid的单元格。

您也可以DataGrid根据需要为单个列设置此值。


1
网格呈灰色,看起来更像处于禁用状态-与Winforms中的只读状态不相似。
布达·弗洛林

3
我同意布达·弗洛林(Buda Florin)的观点。将其设置为ReadOnly使其看起来更像被禁用。“禁用”和“只读”是不同的,因为“只读”通常可以让您选择要复制的文本。当您将DataGrid设置为ReadOnly时,您将无法再选择单元格中的文本。
尼克,

2
@LeslieDavies如果我想让它们保持禁用状态怎么办,但是当我按下DEL时,我还希望能够从datagrid中删除项目?
Roxy'Pro

@ Roxy'Pro,我有同样的问题。您找到解决方案了吗?
帕特里克

45

DataGrid具有XAML属性IsReadOnly,您可以将其设置为true

<my:DataGrid
    IsReadOnly="True"
/>

3

如果要禁用编辑整个网格,可以在网格上将IsReadOnly设置为true。如果要禁止用户添加新行,请设置属性CanUserAddRows =“ False”

<DataGrid IsReadOnly="True" CanUserAddRows="False" />

此外,您可以在各个列上设置IsReadOnly以禁用编辑。


2

我在评论中看到用户,想知道如何在允许删除行的同时禁用单元格编辑:我设法通过将所有列分别设置为只读而不是DataGrid本身来做到这一点。

<DataGrid IsReadOnly="False">
    <DataGrid.Columns>
        <DataGridTextColumn IsReadOnly="True"/>
        <DataGridTextColumn IsReadOnly="True"/>
    </DataGrid.Columns>
</DataGrid>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.