W moim modelu widoku i modelu mam metodę z podpisem bool IsPropertyReadOnly(string propertyName)
. Ta metoda określa, czy aktualnie zalogowany użytkownik może edytować wartość propryny. Kilku użytkowników będzie mogło edytować wartości właściwości, a większość z nich będzie miała dostęp tylko do odczytu.W jaki sposób dane wiążą wynik metody modelu widoku z właściwością TextBox?
Zamiast tworzyć właściwość zwracającą status tylko do odczytu dla każdej właściwości modelu, chcę powiązać wynik właściwości IsPropertyReadOny
z właściwością TextBox.IsReadOnly
.
ten sposób wyobrażam sobie składnię:
<TextBox Text="{Binding Address, Mode=TwoWay}"
IsReadOnly="{Binding MethodName=IsPropertyReadOnly MethodParameter=Address}"
/>
DataContext
zawiera widok model, więc w zasadzie muszę wiązać IsReadOnly
w wyniku wezwania ((Class)this.DataContext).IsPropertyReadOnly("Address")
Jest wiele dokumentacja przy użyciu ObjectDataProvider
, ale dostawca danych obiektu tworzy nową instancję obiektu, która nie jest tym, czego chcę. Co więcej, aby użyć istniejącej instancji, muszę wykonać zadanie z opóźnieniem kodu. Ponownie, nie to, co chcę zrobić.
Z moich badań wynika, że rozwiązanie, które dziedziczy po Binding
lub MarkupExtension
, lepiej pasuje do moich potrzeb.
Każda pomoc zostanie bardzo doceniona.
Tutaj może być odpowiedź na swoje pytanie (ostatnią odpowiedź, która używa konwertera) [? Wiążą się metody w WPF] (http://stackoverflow.com/questions/ 502250/bind-to-a-method-in-wpf) –