我正在Windows Presentation Foundation中构造一个数据网格,遇到了一个问题。当用户双击数据网格中的某个单元格时,该单元格将进入编辑模式。我希望防止这种情况发生。相反,我希望用户能够选择整行,而不是编辑其中的值。如何才能使双击选择整行,而不是将单击的单元格置于编辑模式?
polhcujo1#
WPF DataGrid有一个IsReadOnly属性,您可以将该属性设置为True,以确保用户无法编辑DataGrid的单元格。您还可以根据需要为DataGrid中的各个列设置此值。
DataGrid
IsReadOnly
True
zsbz8rwp2#
数据网格有一个XAML属性IsReadOnly,您可以将其设置为true:
true
<my:DataGrid IsReadOnly="True" />
ghhaqwfi3#
我看到用户在评论中想知道如何禁用单元格编辑,同时允许行删除:我通过将所有列单独设置为只读,而不是将DataGrid本身设置为只读,成功地做到了这一点。
<DataGrid IsReadOnly="False"> <DataGrid.Columns> <DataGridTextColumn IsReadOnly="True"/> <DataGridTextColumn IsReadOnly="True"/> </DataGrid.Columns> </DataGrid>
gcuhipw94#
如果要禁止编辑整个网格,可以在网格上将IsReadOnly设置为true。如果要禁止用户添加新行,可以设置属性CanUserAddRows=“False”
<DataGrid IsReadOnly="True" CanUserAddRows="False" />
此外,您还可以在单个列上设置IsReadOnly以禁用编辑。
piztneat5#
如果您绑定到ObservableCollection<T>,并且DataGrid具有AutoGenerateColumns="True",因为您不想弄乱XAML中的各个列定义,那么您似乎可以使用System.ComponentModel中的ReadOnlyAttribute:
ObservableCollection<T>
AutoGenerateColumns="True"
System.ComponentModel
ReadOnlyAttribute
using System.ComponentModel; public class SomeObject { public bool ClickableCheckboxColumn { get; set; } = true; [ReadOnly(true)] public string UneditableTextColumn { get; set; } = string.Empty; }
5条答案
按热度按时间polhcujo1#
WPF
DataGrid
有一个IsReadOnly
属性,您可以将该属性设置为True
,以确保用户无法编辑DataGrid
的单元格。您还可以根据需要为
DataGrid
中的各个列设置此值。zsbz8rwp2#
数据网格有一个XAML属性
IsReadOnly
,您可以将其设置为true
:ghhaqwfi3#
我看到用户在评论中想知道如何禁用单元格编辑,同时允许行删除:我通过将所有列单独设置为只读,而不是将DataGrid本身设置为只读,成功地做到了这一点。
gcuhipw94#
如果要禁止编辑整个网格,可以在网格上将IsReadOnly设置为true。如果要禁止用户添加新行,可以设置属性CanUserAddRows=“False”
此外,您还可以在单个列上设置IsReadOnly以禁用编辑。
piztneat5#
如果您绑定到
ObservableCollection<T>
,并且DataGrid
具有AutoGenerateColumns="True"
,因为您不想弄乱XAML中的各个列定义,那么您似乎可以使用System.ComponentModel
中的ReadOnlyAttribute
: