WPF Datagrid'de hücreleri düzenlemeyi nasıl devre dışı bırakabilirim?


116

Windows Presentation Foundation'da bir datagrid oluşturuyorum ve bir sorunum var. Bir kullanıcı datagridimdeki bir hücreye çift tıkladığında, hücre düzenleme moduna geçer. Bunu önlemek istiyorum. Bunun yerine, kullanıcıların tüm satırı seçebilmesini istiyorum - içindeki değerleri düzenlemesini değil.

Tıklanan hücreyi düzenleme moduna geçirmek yerine çift tıklamanın tam satırı seçmesini nasıl sağlayabilirim?

Yanıtlar:


255

WPF DataGrid, kullanıcıların hücrelerinizi düzenleyememesini sağlamak için IsReadOnlyayarlayabileceğiniz bir özelliğe sahiptir .TrueDataGrid

Bu değeri DataGrid, gerektiği gibi sayfanızdaki tek tek sütunlar için de ayarlayabilirsiniz .


1
Grid gri renktedir ve daha çok devre dışı durumdaymış gibi görünür - winformlardan salt okunur durumuna benzemez.
Buda Florin

3
Buda Florin'e katılıyorum. ReadOnly olarak ayarlamak, daha çok devre dışı bırakılmış gibi görünmesini sağlar. Disabled ve ReadOnly farklıdır çünkü ReadOnly normalde kopyalanacak metni seçmenize izin verir. DataGrid'i ReadOnly olarak ayarladığınızda artık hücrelerdeki metni seçemezsiniz.
Nick

2
@LeslieDavies peki ya onları devre dışı bırakmak istiyorsam, ancak DEL tuşuna bastığımda datagriddeki öğeleri de kaldırabilmek istiyorum?
Roxy'Pro

@ Roxy'Pro, aynı sorum var. bir çözüm buldun mu?
Patrick

45

DataGrid şu IsReadOnlyşekilde ayarlayabileceğiniz bir XAML özelliğine sahiptir true:

<my:DataGrid
    IsReadOnly="True"
/>

3

Tüm ızgarayı düzenlemeyi devre dışı bırakmak istiyorsanız, ızgarada IsReadOnly öğesini true olarak ayarlayabilirsiniz. Kullanıcının yeni satır eklemesini devre dışı bırakmak istiyorsanız, CanUserAddRows = "False" özelliğini ayarlayın.

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

Dahası, düzenlemeyi devre dışı bırakmak için IsReadOnly'yi tek tek sütunlarda ayarlayabilirsiniz.


2

Kullanıcıların yorumlarda satır silmeye izin verirken hücre düzenlemeyi nasıl devre dışı bırakacaklarını merak ettiğini görüyorum: Bunu, DataGrid yerine tüm sütunları tek tek salt okunur olarak ayarlayarak başardım.

<DataGrid IsReadOnly="False">
    <DataGrid.Columns>
        <DataGridTextColumn IsReadOnly="True"/>
        <DataGridTextColumn IsReadOnly="True"/>
    </DataGrid.Columns>
</DataGrid>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.