Une liaison TwoWay ou OneWayToSource ne peut pas fonctionner sur la propriété en lecture seule

104

J'ai une propriété en lecture seule que je dois afficher dans une zone de texte et obtenir cette erreur au moment de l'exécution. J'ai mis IsEnabled="False", IsReadOnly="True"- pas de chance. D'autres recherches indiquent que la lecture seule devrait résoudre ce problème, mais pas pour moi. J'ai une solution de contournement moche en ajoutant un poseur factice ...

Tony Trembath-Drake
la source
5
Si vous souhaitez une liaison bidirectionnelle, le paramètre de propriété doit être public. Voir stackoverflow.com/questions/8773150/…
Colonel Panic
1
Et du département de l'évidence aveuglante, le setter doit aussi exister ; c'est-à-dire qu'une propriété avec juste un get présentera le même problème.
midi et

Réponses:

172

C'est difficile à deviner sans code, mais vous devriez pouvoir définir le BindingMode sur OneWay.

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

ou à partir du code:

Binding binding = new Binding();
binding.Mode = BindingMode.OneWay;
Razzie
la source
29
Oui, "Mode = OneWay" == Lecture seule; "Mode = OneWayToSource" == Écriture uniquement
Bryan Anderson
1
Veuillez noter que dans .NET 4.0 il y a un "bogue" que OneWayToSource fait également un get: stackoverflow.com/questions/14967667/...
Luuk
Aussi, pour la liaison TwoWay sur les paramètres, voir stackoverflow.com/a/845033/194717
Tony