ฉันจะปิดการแก้ไขเซลล์ใน WPF Datagrid ได้อย่างไร


116

ฉันกำลังสร้างดาต้ากริดใน Windows Presentation Foundation และพบปัญหา เมื่อผู้ใช้ดับเบิลคลิกที่เซลล์ในดาต้ากริดของฉันเซลล์จะเข้าสู่โหมดแก้ไข ฉันต้องการป้องกันสิ่งนั้น แต่ฉันต้องการให้ผู้ใช้สามารถเลือกแถวเต็ม แต่ไม่แก้ไขค่าในนั้น

ฉันจะทำให้การคลิกสองครั้งเลือกเต็มแถวแทนที่จะวางเซลล์ที่คลิกไว้ในโหมดแก้ไขได้อย่างไร

คำตอบ:


255

WPF DataGridมีIsReadOnlyคุณสมบัติที่คุณสามารถตั้งค่าเพื่อTrueให้แน่ใจว่าผู้ใช้ไม่สามารถแก้ไขDataGridเซลล์ของคุณได้

คุณยังสามารถตั้งค่านี้สำหรับแต่ละคอลัมน์ในของคุณได้DataGridตามต้องการ


1
กริดเป็นสีเทาและดูเหมือนอยู่ในสถานะปิดใช้งานมากขึ้น - ไม่คล้ายกับสถานะอ่านอย่างเดียวจาก winforms
Buda Florin

3
ฉันเห็นด้วยกับ Buda Florin การตั้งค่าเป็น ReadOnly ทำให้ดูเหมือนปิดใช้งานมากขึ้น ปิดใช้งานและอ่านอย่างเดียวจะแตกต่างกันเนื่องจากโดยปกติ ReadOnly จะให้คุณเลือกข้อความสำหรับการคัดลอก เมื่อคุณตั้งค่า DataGrid เป็น ReadOnly คุณจะไม่สามารถเลือกข้อความในเซลล์ได้อีกต่อไป
นิค

2
@LeslieDavies ถ้าฉันต้องการปิดการใช้งาน แต่ฉันต้องการที่จะสามารถลบรายการออกจากดาต้ากริดเมื่อฉันกด DEL?
Roxy'Pro

@ Roxy'Pro ฉันมีคำถามเหมือนกัน คุณพบวิธีแก้ปัญหาหรือไม่?
Patrick


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.