2010-12-10 3 views
0

Как связать атрибут элемента управления WPF с объектом, который я создал в коде?Привязать атрибут управления к свойству объекта в XAML

Например, у меня есть этот фрагмент XAML:

<TextBlock Text="(title name here)"/> 

и у меня есть этот класс в C#:

public class Article 
{ 
    public string Title { get; set; } 
    public DateTime Published { get; set; } 
    public string Body { get; set; } 
} 

и у меня есть объект:

Article a = new Article(); 
a.Title = "Foo"; 

В основном, как мне заставить TextBlock всегда отображать все, на что настроен a.Title?

Если это помогает (возможно, есть лучший способ сделать это), в моем примере у меня есть окно со списком статей и секцией детализации статьи. Когда я выбираю статью, я хочу заполнить раздел сведений.

ответ

4

Используйте следующее:

<TextBlock Text="{Binding Title}" /> 

Это предполагает, что DataContext для элемента TextBlock устанавливается на экземпляр вашего типа статьи. Как правило, вы должны стремиться использовать MVVM, в этом случае DataContext вашего представления будет вашей соответствующей моделью представления, и вы можете в этом случае иметь свойство в вашей модели представлений, которая имеет тип Article. Тогда ваше выражение привязки будет {Binding MyArticleProperty.Title}.

Чтобы пользовательский интерфейс обновлялся при изменении значения этого значения в коде, вам необходимо аннулировать привязку, используя либо свойства зависимостей, либо внедряя INotifyPropertyChanged в вашей модели представления.

+0

Хмм ... Я не знаком с MVVM. Я пойду посмотрю, что, наверное ... –

+1

http://csharperimage.jeremylikness.com/2010/2010/model-view-viewmodel-mvvm-explained.html - хорошая статья – devdigital

3

Вы должны использовать Binding например .:

<TextBlock Text="{Binding ArticleProp.Title}"/> 

Предполагая, что у вас есть ArticleProp свойство типа Article на DataContext объекта XAML.

Если вы хотите, чтобы TextBlock автоматически обновлялся, вам также необходимо сделать Article реализовать INotifyPropertyChanged.

+0

Что за объект XAML что вы ссылаетесь? –

+0

В файле XAML, где у вас есть тег TextBlock, вам необходимо, чтобы ArticleProp был свойством в DataContext. –

Смежные вопросы