Uma ligação TwoWay ou OneWayToSource não pode funcionar na propriedade somente leitura

103

Tenho uma propriedade somente leitura que preciso exibir em uma caixa de texto e recebo esse erro em tempo de execução. Eu defini IsEnabled="False", IsReadOnly="True"- sem sorte. Outras pesquisas dizem que somente leitura deve consertar, mas não para mim. Eu tenho uma solução feia adicionando um setter fictício ...

Tony Trembath-Drake
fonte
5
Se você deseja uma ligação bidirecional, o configurador de propriedade deve ser público. Consulte stackoverflow.com/questions/8773150/…
Coronel Panic
1
E do departamento do óbvio ofuscante, o levantador também deve existir ; ou seja, uma propriedade com apenas um get exibirá o mesmo problema.
dia e

Respostas:

172

É difícil adivinhar sem código, mas você deve ser capaz de definir o BindingMode como OneWay.

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

ou do código:

Binding binding = new Binding();
binding.Mode = BindingMode.OneWay;
Razzie
fonte
29
Sim, "Mode = OneWay" == Somente leitura; "Mode = OneWayToSource" == Somente gravação
Bryan Anderson
1
Observe que no .NET 4.0 há um "bug" que o OneWayToSource também obtém: stackoverflow.com/questions/14967667/…
Luuk
Além disso, para TwoWay Binding nas Configurações, consulte stackoverflow.com/a/845033/194717
Tony