WPFデータグリッドのセルの編集を無効にするにはどうすればよいですか?


116

Windows Presentation Foundationでデータグリッドを構築していますが、問題があります。ユーザーがデータグリッドのセルをダブルクリックすると、セルが編集モードになります。それを防ぎたい。代わりに、ユーザーが行全体を選択できるようにしたい-その中の値を編集しない。

クリックしたセルを編集モードにする代わりに、ダブルクリックで行全体が選択されるようにするにはどうすればよいですか?

回答:


254

WPFにDataGridは、ユーザーがのセルを編集できないようにIsReadOnly設定できるプロパティがあります。TrueDataGrid

DataGrid必要に応じて、の個々の列にこの値を設定することもできます。


1
グリッドは灰色になり、無効状態のように見えます-winformsの読み取り専用状態とは似ていません。
Buda Florin

3
私はブダ・フローリンに同意します。読み取り専用に設定すると、無効になっているように見えます。通常、ReadOnlyではコピーするテキストを選択できるため、DisabledとReadOnlyは異なります。DataGridをReadOnlyに設定すると、セル内のテキストを選択できなくなります。
Nick

2
@LeslieDavies無効にしたい場合はどうですか?また、DELを押したときにデータグリッドからアイテムを削除できるようにしたいですか?
Roxy'Pro

@ Roxy'Pro、同じ質問があります。解決策は見つかりましたか?
Patrick

45

DataGridには、IsReadOnly次のように設定できるXAMLプロパティがあります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>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.