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

pnwntuvh  于 2023-02-13  发布在  其他
关注(0)|答案(5)|浏览(1233)

我正在Windows Presentation Foundation中构造一个数据网格,遇到了一个问题。当用户双击数据网格中的某个单元格时,该单元格将进入编辑模式。我希望防止这种情况发生。相反,我希望用户能够选择整行,而不是编辑其中的值。
如何才能使双击选择整行,而不是将单击的单元格置于编辑模式?

polhcujo

polhcujo1#

WPF DataGrid有一个IsReadOnly属性,您可以将该属性设置为True,以确保用户无法编辑DataGrid的单元格。
您还可以根据需要为DataGrid中的各个列设置此值。

zsbz8rwp

zsbz8rwp2#

数据网格有一个XAML属性IsReadOnly,您可以将其设置为true

<my:DataGrid
    IsReadOnly="True"
/>
ghhaqwfi

ghhaqwfi3#

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

<DataGrid IsReadOnly="False">
    <DataGrid.Columns>
        <DataGridTextColumn IsReadOnly="True"/>
        <DataGridTextColumn IsReadOnly="True"/>
    </DataGrid.Columns>
</DataGrid>
gcuhipw9

gcuhipw94#

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

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

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

piztneat

piztneat5#

如果您绑定到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;
}

相关问题