Привязка Метода set. Значение из кода

В XAML я могу записать что-то вроде этого:

<Setter Property="PropertyName" Value="{Binding ...}" />

Как я сделал бы это в коде? Я создал привязку в коде прежде, но я, может казаться, не нахожу помех ValueProperty объект на Setter класс для передачи BindingOperations.SetBinding().

7
задан devios1 13 June 2010 в 00:59
поделиться

1 ответ

При установке привязки для Setter вам вообще не нужны BindingOperations. Все, что вам нужно сделать, это:

var setter = new Setter(TextBlock.TextProperty, new Binding("FirstName"));

или, что эквивалентно

var setter = new Setter
{
  Property = TextBlock.TextProperty,
  Value = new Binding("FirstName"),
};

, любой из них будет эквивалентен

<Setter Property="TextBlock.Text" Value="{Binding FirstName}" />

Причина, по которой это работает, заключается в том, что Setter.Value является обычным свойством CLR, а не DependencyProperty, и поэтому не может связывать. Таким образом, нет двусмысленности ни в XAML, ни в коде, когда вы храните в нем объект Binding.

Когда Setter фактически применяется к объекту, если Binding обнаруживается в Setter, вызывается эквивалент BindingOperations.SetBinding. В противном случае свойство устанавливается напрямую.

13
ответ дан 6 December 2019 в 19:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: