Як я можу відключити редагування комірок у WPF Datagrid?


116

Я будую мережу даних у Windows Presentation Foundation, і у мене є проблема. Коли користувач двічі клацає клітинку на моїй мережі даних, ця клітина переходить у режим редагування. Я хочу запобігти цьому. Натомість я хочу, щоб користувачі могли вибрати повний рядок - не редагувати значення в ньому.

Як я можу зробити так, щоб подвійні клацання вибирали повний рядок замість того, щоб клацнути клітинку в режимі редагування?

Відповіді:


254

У WPF DataGridє IsReadOnlyвластивість, яку ви можете встановити, щоб Trueкористувачі не могли редагувати DataGridклітинки вашої .

Ви також можете встановити це значення для окремих стовпців у своїх DataGridпотребах.


1
Сітка сірого кольору і більше нагадує інвалідний стан - не схожа на стан, який зчитується з вікон.
Буда Флорін

3
Я згоден з Будою Флоріном. Якщо встановити його на ReadOnly, він виглядає більше, як його відключено. Інваліди та ReadOnly відрізняються тим, що ReadOnly зазвичай дозволяє вибирати текст для копіювання. Якщо ви встановите DataGrid як ReadOnly, ви більше не можете вибирати текст у клітинках.
Нік

2
@LeslieDavies, що робити, якщо я хочу їх відключити, але я також хочу видалити елементи із сітки даних, коли натискаю кнопку DEL?
Roxy'Pro

@ Roxy'Pro, у мене те саме питання. Ви знайшли рішення?
Патрік

45

DataGrid має властивість XAML, IsReadOnlyяку ви можете встановити true:

<my:DataGrid
    IsReadOnly="True"
/>

3

Якщо ви хочете відключити редагування всієї сітки, ви можете встановити IsReadOnly на true у сітці. Якщо ви хочете відключити користувача для додавання нових рядків, ви встановите властивість CanUserAddRows = "Невірно"

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

Крім того, ви можете встановити IsReadOnly для окремих стовпців, щоб відключити редагування.


2

Я бачу користувачів у коментарях, які задаються питанням, як відключити редагування комірок, дозволяючи видалити рядки: мені вдалося це зробити, встановивши всі стовпці окремо для читання лише замість самої DataGrid.

<DataGrid IsReadOnly="False">
    <DataGrid.Columns>
        <DataGridTextColumn IsReadOnly="True"/>
        <DataGridTextColumn IsReadOnly="True"/>
    </DataGrid.Columns>
</DataGrid>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.