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


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;

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.