2012-03-30 70 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

相关问题