Привязка 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
Тони