C# 元素绑定,如果两个涉及的对象都是在代码隐藏中创建的

C# 元素绑定,如果两个涉及的对象都是在代码隐藏中创建的,c#,wpf,xaml,binding,element-binding,C#,Wpf,Xaml,Binding,Element Binding,在我的WPF项目中,我尝试在代码隐藏中创建显示的对象。对于某些属性,我使用元素绑定,例如: <GridViewColumn ... Width="{Binding ElementName=dummywidth1, Path=ActualWidth}" > 其中“dummywidth1”是具有要使用的宽度的边框 如果边框“dummywidth1”已经是.xaml文件的一部分,那么这种方法很有效。如果我也在代码隐藏中创建边框,则宽度不会应用于列 Border border = new

在我的WPF项目中,我尝试在代码隐藏中创建显示的对象。对于某些属性,我使用元素绑定,例如:

<GridViewColumn ... Width="{Binding ElementName=dummywidth1, Path=ActualWidth}" >
其中“dummywidth1”是具有要使用的宽度的边框

如果边框“dummywidth1”已经是.xaml文件的一部分,那么这种方法很有效。如果我也在代码隐藏中创建边框,则宽度不会应用于列

Border border = new Border();
border.Name = "WidthHelper" + Grid_Sizer.ColumnDefinitions.Count;
Grid_Sizer.Children.Add(border);
并为绑定使用新的border.Name

binding.ElementName = border.Name;
元素绑定似乎不适用于刚刚创建的Border对象。显示WPF时,在代码隐藏中创建的边框具有所需的大小,但该大小不会传递到列。是否有任何方法可以通过在代码隐藏中创建的两个元素实现元素绑定

提前感谢,

Frank

设置绑定的
Source
属性比设置
ElementName
要简单得多:

binding.Source = border;

有一段时间没有做WPF了,但我似乎记得一些关于动态元素名称在可视化树中没有某种中间步骤就无法立即识别的事情。@AlexPaven你可能指的是名称范围,但这根本不是必需的。给你,很简单:D非常感谢!
binding.Source = border;