2009-02-26 8 views
75

J'ai une propriété en lecture seule que j'ai besoin d'afficher dans une zone de texte et d'obtenir cette erreur lors de l'exécution. J'ai mis IsEnabled="False", IsReadOnly="True" - pas de chance. D'autres recherches disent que le readonly devrait le réparer, mais pas pour moi. J'ai une solution de contournement en ajoutant un setter fictif ...Une liaison TwoWay ou OneWayToSource ne peut pas fonctionner sur la propriété en lecture seule

+5

Si vous ne voulez deux voies de liaison, le poseur de propriété doit être public. Voir http://stackoverflow.com/questions/8773150/invalidoperationexception-a-twoway-or-onewaytosource-binding-cannot-work-on-th –

+1

Et du département de l'aveuglement évident, le passeur doit aussi * exister *; c'est-à-dire qu'une propriété avec juste une exposition présentera le même problème. – noonand

Répondre

126

Il est difficile de deviner sans code, mais vous devriez être en mesure de définir le mode de liaison à OneWay.

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

ou de code:

Binding binding = new Binding(); 
binding.Mode = BindingMode.OneWay; 
+21

Oui, "Mode = OneWay" == Lecture seule; "Mode = OneWayToSource" == Écrire seulement –

+1

Veuillez noter que dans .NET 4.0 il y a un "bug" que OneWayToSource fait aussi un get: http://stackoverflow.com/questions/14967667/wpf-net-4-onewaytosource-binding -to-write-only-propriété-works-on-machine- – Luuk

+0

En outre, pour TwoWay Binding on Settings, voir http://stackoverflow.com/a/845033/194717 – Tony

Questions connexes