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 ...


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;

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.