2010-12-10 123 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}" /> 

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

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

+0

嗯...我不熟悉MVVM。我会去看看,我想... – 2010-12-10 20:47:49

+1

http://csharperimage.jeremylikness.com/2010/04/model-view-viewmodel-mvvm-explained.html是一个不错的文章 – devdigital 2010-12-10 21:08:33

3

您需要使用Binding例如为:

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

假设你在XAML对象的DataContext有Article类型的ArticleProp性能。

如果你想TextBlock自动更新,你还需要使Article实施INotifyPropertyChanged

+0

你指的是什么XAML对象? – 2010-12-10 20:45:14

+0

在您有TextBlock标记的XAML文件中,您需要将ArticleProp作为DataContext上的一个属性。 – 2010-12-11 09:37:29

相关问题