Привязка TwoWay или OneWayToSource не может работать со свойством только для чтения


105

У меня есть свойство только для чтения, которое мне нужно отобразить в текстовом поле, и я получаю эту ошибку во время выполнения. Я никогда установить IsEnabled="False", IsReadOnly="True"- не повезло. Другие поисковые запросы говорят, что это должно исправить только чтение, но не для меня. У меня есть уродливый обходной путь, добавив фиктивный сеттер ...


5
Если вам нужна двусторонняя привязка, установщик свойств должен быть общедоступным. См. Stackoverflow.com/questions/8773150/…
Colonel Panic

1
И из отдела ослепляюще очевидного, сеттер тоже должен существовать ; то есть собственность с только получением будет демонстрировать ту же проблему.
полдень и

Ответы:


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/…
Луук,

Кроме того, для двухсторонней привязки в настройках см. Stackoverflow.com/a/845033/194717
Тони
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.