Powiązanie TwoWay lub OneWayToSource nie może działać na właściwości tylko do odczytu

105

Mam właściwość tylko do odczytu, którą muszę wyświetlić w polu tekstowym i otrzymuję ten błąd w czasie wykonywania. Ustawiłem IsEnabled="False", IsReadOnly="True"- bez powodzenia. Inne wyszukiwania mówią, że readonly powinno to naprawić, ale nie dla mnie. Mam brzydkie obejście, dodając fałszywego setera ...

Tony Trembath-Drake
źródło
5
Jeśli chcesz, aby wiązanie dwukierunkowe było wymagane, element ustawiający właściwość musi być publiczny. Zobacz stackoverflow.com/questions/8773150/…
Colonel Panic
1
A z działu oślepiająco oczywistego seter też musi istnieć ; tj. właściwość zawierająca tylko get będzie wykazywać ten sam problem.
południe i

Odpowiedzi:

173

Trudno to odgadnąć bez kodu, ale powinieneś być w stanie ustawić BindingMode na OneWay.

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

lub z kodu:

Binding binding = new Binding();
binding.Mode = BindingMode.OneWay;
Razzie
źródło
29
Tak, "Mode = OneWay" == Tylko do odczytu; „Tryb = OneWayToSource” == Tylko zapis
Bryan Anderson
1
Zwróć uwagę, że w .NET 4.0 jest "błąd", który OneWayToSource również robi: stackoverflow.com/questions/14967667/ ...
Luuk
Ponadto informacje na temat powiązań TwoWay w ustawieniach można znaleźć na stronie stackoverflow.com/a/845033/194717
Tony