2012-03-30 68 views
0

我試圖將我的WPF按鈕的Content屬性以編程方式綁定到動態資源(業務對象),我以前使用給定路徑定義過。到目前爲止,我試過,沒有運氣以下方法:如何以編程方式將按鈕內容綁定到動態資源

我的業務對象定義爲資源:

<Window.Resources> 
    <env:PartyType x:Key="myParty" FullName="JOHN"/> 
</Window.Resources> 

我試着像這樣以編程方式綁定到我的按鈕:

 Binding binding = new Binding(); 
     binding.Source = this.Resources["myParty"]; 
     binding.Path = new PropertyPath("FullName"); 
     btn.SetBinding(ContentProperty, binding); 

但很顯然,當我序列化到XAML時,它試圖序列化整個Party對象,而我只想保留對我的資源的綁定引用,所以此選項不起作用。 我的第二個選擇是:

btn.SetResourceReference(ContentProperty,"myParty"); 

這被序列化到XAML爲:

<av:Button Content="{av:DynamicResource myParty}"/> 

但我不知道如何指定我的路徑=全名,以便它可以顯示Party.FullName而不是Party.Type()

有關如何實現此目的的任何想法?

由於提前,

回答

1

分配動態資源的DataContext,然後創建一個沒有設置Source財產

btn.SetResourceReference(DataContextProperty,"myParty"); 

Binding binding = new Binding(); 
binding.Path = new PropertyPath("FullName"); 
btn.SetBinding(ContentProperty, binding); 

現在你的綁定,如果你已經depand按鈕的DataContext,那麼你需要設置一個Label作爲按鈕的內容,並在標籤上設置資源和綁定。

+0

謝謝西蒙,那部分工作正常。現在,我決定在父控件(Canvas)的XAML中設置DataContext。一切工作正常,但是當我加載序列化的XAML時,它不顯示綁定的數據,對它有什麼想法? – 2012-03-30 15:14:23

+0

@AdolfoPerez,序列化的XAML是否包含綁定?我唯一的猜測是綁定沒有被序列化。 – Terkel 2012-03-30 15:38:29

+0

是的,Serialized XAML包含如下綁定:' 2012-03-30 16:55:55

相關問題