Связывающие свойства в коде позади - PullRequest
6 голосов
/ 30 мая 2010

У меня есть приложение WPF и окно в нем. Позвольте мне иметь что-то вроде этого в моем XML:

<Label Name="TitleLabel" Content="Some title" \>
<Label Name="BottomLabel" Content="{Binding ElementName=TitleLabel Path=Content">

Допустим, я не могу использовать xml для создания BottomLabel и TitleLabel. Поэтому я должен создать BottomLabel как свойство в моем «Коде позади». Как указать ту же привязку для свойства Content метки Bottom в моем коде? Возможно ли это вообще?

Так что у меня было бы что-то вроде этого:

public Label TitleLabel {get; private set;}
public Label BottomLabel {get; private set;}

public MyClass(){
    TitleLabel = new Label();
    TitleLabel.Content = "Some title";
    BottomLabel = new Label();
    BottomLabel.Content = // ?? what should be here ? How do I specify the binding
                          // that binds BottomLabel.COntent to TitleLabel.Content?
}

Что я могу написать вместо комментария? Спасибо за ответы.

1 Ответ

16 голосов
/ 30 мая 2010

Вот как вы определяете и применяете привязку в коде:

Binding binding = new Binding {
  Source = TitleLabel,
  Path = new PropertyPath("Content"),
};
BottomLabel.SetBinding(ContentControl.ContentProperty, binding);

Обратите внимание, что для объектов, которые не являются производными от FrameworkElement, вы должны явно использовать BindingOperations.SetBinding() вместо element.SetBinding():

BindingOperations.SetBinding(BottomLabel, ContentControl.ContentProperty, binding);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...