C# 如何以编程方式将按钮内容绑定到动态资源

C# 如何以编程方式将按钮内容绑定到动态资源,c#,wpf,xaml,binding,code-behind,C#,Wpf,Xaml,Binding,Code Behind,我试图以编程方式将WPF按钮的Content属性绑定到我以前使用给定路径定义的动态资源(业务对象)。到目前为止,我尝试了以下方法,但没有成功: 我的业务对象定义为资源: <Window.Resources> <env:PartyType x:Key="myParty" FullName="JOHN"/> </Window.Resources> 但显然,当我序列化到XAML时,它试图序列化整个Party对象,我只想保留对我的资源的绑定引用,所以这个选项不

我试图以编程方式将WPF按钮的Content属性绑定到我以前使用给定路径定义的动态资源(业务对象)。到目前为止,我尝试了以下方法,但没有成功:

我的业务对象定义为资源:

<Window.Resources>
   <env:PartyType x:Key="myParty" FullName="JOHN"/>
</Window.Resources>
但显然,当我序列化到XAML时,它试图序列化整个Party对象,我只想保留对我的资源的绑定引用,所以这个选项不起作用。 我的第二个选择是:

btn.SetResourceReference(ContentProperty,"myParty");
将序列化为XAML的:

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

但是我不知道如何指定我的Path=FullName,这样它就可以显示
Party.FullName
而不是
Party.Type()

关于如何实现这一点有什么想法吗


提前感谢,

将动态资源分配给
DataContext
,然后在不设置
Source
属性的情况下创建绑定

btn.SetResourceReference(DataContextProperty,"myParty");

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

现在,如果您已经在按钮的
DataContext
上删除和,那么您需要将
标签设置为按钮的内容,并在标签上设置资源和绑定。

将动态资源分配给
DataContext
,然后在不设置
Source
属性的情况下创建绑定

btn.SetResourceReference(DataContextProperty,"myParty");

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

现在,如果您已经在按钮的
DataContext
,那么您需要设置一个
标签作为按钮的内容,并在标签上设置资源和绑定。

谢谢Simon,该部分工作正常。现在,我决定在XAML中为父控件(画布)设置DataContext。一切正常,但是当我加载序列化的XAML时,它没有显示绑定的数据,有什么想法吗?@AdolfoPerez,序列化的XAML包括绑定吗?我唯一的猜测是绑定没有被序列化。是的,序列化的XAML包括如下绑定:
Hmm,请尝试在输出窗口中查找绑定错误。前一段时间我写了一篇关于调试数据绑定的文章。你可以找到它,我认为它应该让你明白为什么绑定不能按预期工作。我必须这样做。再次感谢您的帮助@SimonBangKerkildsenThanks Simon,这部分工作很好。现在,我决定在XAML中为父控件(画布)设置DataContext。一切正常,但是当我加载序列化的XAML时,它没有显示绑定的数据,有什么想法吗?@AdolfoPerez,序列化的XAML包括绑定吗?我唯一的猜测是绑定没有被序列化。是的,序列化的XAML包括如下绑定:
Hmm,请尝试在输出窗口中查找绑定错误。前一段时间我写了一篇关于调试数据绑定的文章。你可以找到它,我认为它应该让你明白为什么绑定不能按预期工作。我必须这样做。再次感谢您的帮助@SimonBangKerkildsen