我正在构建一个Windows Presentation Foundation中的数据网格,遇到了一个问题。当用户双击我的数据网格中的单元格时,单元格会进入编辑模式。我想阻止这种情况。相反,我希望用户能够选择整行 - 而不是编辑其中的值。
如何使双击选择整行而不是将点击的单元格置于编辑模式?
我正在构建一个Windows Presentation Foundation中的数据网格,遇到了一个问题。当用户双击我的数据网格中的单元格时,单元格会进入编辑模式。我想阻止这种情况。相反,我希望用户能够选择整行 - 而不是编辑其中的值。
如何使双击选择整行而不是将点击的单元格置于编辑模式?
WPF的DataGrid
有一个IsReadOnly
属性,您可以将其设置为True
,以确保用户无法编辑您的DataGrid
单元格。
您还可以根据需要为DataGrid
中的单独列设置此值。
DataGrid有一个XAML属性IsReadOnly
,你可以将它设置为true
:
<my:DataGrid
IsReadOnly="True"
/>
我在评论中看到有用户想要禁用单元格编辑,但又允许删除行:我通过将所有列分别设置为只读来实现这一点,而不是仅仅禁用 DataGrid 本身。
<DataGrid IsReadOnly="False">
<DataGrid.Columns>
<DataGridTextColumn IsReadOnly="True"/>
<DataGridTextColumn IsReadOnly="True"/>
</DataGrid.Columns>
</DataGrid>
如果您想禁用整个网格的编辑,可以将IsReadOnly属性设置为true。 如果您想禁止用户添加新行,则设置CanUserAddRows属性为“False”。
<DataGrid IsReadOnly="True" CanUserAddRows="False" />
此外,您可以在各列上设置IsReadOnly以禁用编辑。
如果你绑定到一个 ObservableCollection<T>
,并且你的 DataGrid
设置了 AutoGenerateColumns="True"
,因为你不想在 XAML 中处理单个列定义,那么似乎可以使用来自 System.ComponentModel
的 ReadOnlyAttribute
:
using System.ComponentModel;
public class SomeObject
{
public bool ClickableCheckboxColumn { get; set; } = true;
[ReadOnly(true)]
public string UneditableTextColumn { get; set; } = string.Empty;
}