C# 如何以编程方式将按钮内容绑定到动态资源
我试图以编程方式将WPF按钮的Content属性绑定到我以前使用给定路径定义的动态资源(业务对象)。到目前为止,我尝试了以下方法,但没有成功: 我的业务对象定义为资源: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对象,我只想保留对我的资源的绑定引用,所以这个选项不
<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