2010-12-10 197 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

相關問題