Eine TwoWay- oder OneWayToSource-Bindung kann nicht für die schreibgeschützte Eigenschaft verwendet werden

102

Ich habe eine schreibgeschützte Eigenschaft, die ich in einem Textfeld anzeigen muss, und erhalte diesen Fehler zur Laufzeit. Ich habe gesetzt IsEnabled="False", IsReadOnly="True"- kein Glück. Andere Suchanfragen besagen, dass das Readonly das Problem beheben sollte, aber nicht für mich. Ich habe eine hässliche Problemumgehung, indem ich einen Dummy-Setter hinzufüge ...

Tony Trembath-Drake
quelle
5
Wenn Sie eine bidirektionale Bindung wünschen, muss der Eigenschaftssetzer öffentlich sein. Siehe stackoverflow.com/questions/8773150/…
Colonel Panic
1
Und aus der Abteilung des blendend Offensichtlichen muss der Setter auch existieren ; dh eine Eigenschaft mit nur einem get zeigt das gleiche Problem.
Mittag und

Antworten:

171

Ohne Code ist es schwer zu erraten, aber Sie sollten in der Lage sein, den BindingMode auf OneWay zu setzen.

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

oder aus Code:

Binding binding = new Binding();
binding.Mode = BindingMode.OneWay;
Razzie
quelle
29
Ja, "Mode = OneWay" == Schreibgeschützt; "Mode = OneWayToSource" == Nur schreiben
Bryan Anderson
1
Bitte beachten Sie, dass es in .NET 4.0 einen "Fehler" gibt, den OneWayToSource auch ausführt
Luuk
Informationen zur Zwei-Wege-Bindung für Einstellungen finden Sie unter stackoverflow.com/a/845033/194717
Tony,