การรวม TwoWay หรือ OneWayToSource ไม่สามารถทำงานบนคุณสมบัติแบบอ่านอย่างเดียว


105

ฉันมีคุณสมบัติอ่านอย่างเดียวที่ฉันต้องการเพื่อแสดงในกล่องข้อความและได้รับข้อผิดพลาดนี้เมื่อรันไทม์ ฉันได้ตั้งIsEnabled="False", IsReadOnly="True"- ไม่มีโชค การค้นหาอื่น ๆ บอกว่าการอ่านอย่างเดียวควรแก้ไขได้ แต่ไม่ใช่สำหรับฉัน ฉันมีวิธีแก้ปัญหาที่น่าเกลียดโดยการเพิ่มตัวตั้งค่าหุ่น ...


5
หากคุณต้องการการรวมสองทางตัวตั้งค่าคุณสมบัติต้องเป็นสาธารณะ ดูstackoverflow.com/questions/8773150/…
พันเอก Panic

1
และจากแผนกที่ชัดเจนไม่ชัดก็ต้องมี setter อยู่ด้วย กล่าวคือทรัพย์สินที่มีเพียงแค่รับจะแสดงปัญหาเดียวกัน
เที่ยงและ

คำตอบ:


173

ยากที่จะคาดเดาโดยไม่มีรหัส แต่คุณควรตั้งค่า BindingMode เป็น OneWay ได้

<TextBox Text="{Binding Path=MyProperty, Mode=OneWay}" />

หรือจากรหัส:

Binding binding = new Binding();
binding.Mode = BindingMode.OneWay;

29
ใช่ "Mode = OneWay" == อ่านอย่างเดียว; "Mode = OneWayToSource" == เขียนอย่างเดียว
ไบรอันแอนเดอร์สัน

1
โปรดทราบว่าใน. NET 4.0 มี "จุดบกพร่อง" ที่ OneWayToSource ยังรับ: stackoverflow.com/questions/14967667/…
Luuk

นอกจากนี้สำหรับ TwoWay Binding on Settings โปรดดูstackoverflow.com/a/845033/194717
Tony
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.