2011-07-20 15 views
82

Tôi đang xây dựng một DataGrid trong Windows Presentation Foundation, và tôi có một vấn đề. Khi người dùng nhấp đúp vào một ô trong DataGrid của tôi, ô sẽ chuyển sang chế độ chỉnh sửa. Tôi muốn ngăn chặn điều đó. Thay vào đó, tôi muốn người dùng có thể chọn toàn bộ hàng - không chỉnh sửa các giá trị trong đó.Làm cách nào để vô hiệu hóa các ô chỉnh sửa trong một DataGrid WPF?

Tôi làm cách nào để nhấp đúp vào chọn toàn bộ hàng thay vì đặt ô được nhấp vào trong chế độ chỉnh sửa?

Trả lời

189

WPF DataGrid có thuộc tính IsReadOnly mà bạn có thể đặt thành True để đảm bảo rằng người dùng không thể chỉnh sửa các ô của DataGrid.

Bạn cũng có thể đặt giá trị này cho các cột riêng lẻ trong số DataGrid khi cần.

+1

Lưới có màu xám và trông giống như ở trạng thái bị vô hiệu hóa - không giống với trạng thái chỉ đọc từ biểu mẫu thắng. –

+2

Tôi đồng ý với Buda Florin. Đặt nó thành ReadOnly làm cho nó trông giống như nó bị vô hiệu hóa. Vô hiệu hóa và ReadOnly là khác nhau bởi vì ReadOnly thường cho phép bạn chọn văn bản để sao chép. Khi bạn đặt DataGrid thành ReadOnly, bạn không còn có thể chọn văn bản trong các ô. – Nick

+0

@LeslieDavies những gì về nếu tôi muốn giữ chúng bị vô hiệu hóa, nhưng tôi cũng muốn để có thể loại bỏ các mục từ datagrid khi tôi nhấn DEL? –

39

Các DataGrid có một tài sản XAML IsReadOnly mà bạn có thể thiết lập để true:

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

Nếu bạn muốn vô hiệu hóa chỉnh sửa toàn bộ lưới, bạn có thể đặt IsReadOnly true trên lưới. Nếu bạn muốn vô hiệu hóa sử dụng để thêm các hàng mới, bạn đặt CanUserAddRows tài sản = "False"

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

Hơn nữa bạn có thể đặt trên các cột IsReadOnly cá nhân để vô hiệu hóa chỉnh sửa.