将控件属性绑定到XAML中的对象属性

时间:2010-12-10 19:48:49

标签: .net wpf xaml

如何将WPF控件的属性绑定到我在代码中创建的对象?

例如,假设我有一段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始终显示aTitle设置为什么?

如果它有帮助(也许有更好的方法),在我的例子中,我有一个窗口,其中包含文章列表和文章详细信息部分。当我选择一篇文章时,我想填写详细信息部分。

2 个答案:

答案 0 :(得分:4)

使用以下内容:

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

这假定TextBlock元素的DataContext设置为Article类型的实例。通常,您应该使用MVVM,在这种情况下,您的视图的DataContext将是您的相应视图模型,在这种情况下,您可能在视图模型上具有Article类型的属性。您的绑定表达式将是{Binding MyArticleProperty.Title}。

要使UI在代码中更改此属性值时进行更新,您需要通过使用依赖项属性或在视图模型上实现INotifyPropertyChanged来使绑定无效。

答案 1 :(得分:3)

您需要使用Binding例如:

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

假设您在XAML对象的DataContext上有ArticleProp类型Article的属性。

如果您希望TextBlock自动更新,您还需要Article实施INotifyPropertyChanged