元素绑定如果两个涉及的对象都是在后面的代码中创建的

时间:2017-06-23 11:39:23

标签: c# wpf xaml binding element-binding

在我的WPF项目中,我尝试在Code后面创建显示的对象。对于某些属性,我使用Element Binding,f.e。:

<GridViewColumn ... Width="{Binding ElementName=dummywidth1, Path=ActualWidth}" >

要在代码后面执行此操作,我使用以下代码:

GridViewColumn column = new GridViewColumn();
Binding binding = new Binding("ActualWidth");
binding.ElementName = "dummywidth1";
BindingOperations.SetBinding(column, GridViewColumn.WidthProperty, binding);

其中“dummywidth1”是具有要使用的宽度的边框。

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

Border border = new Border();
border.Name = "WidthHelper" + Grid_Sizer.ColumnDefinitions.Count;
Grid_Sizer.Children.Add(border);

并使用新的border.Name作为绑定。

binding.ElementName = border.Name;

看起来,Element Binding不能与刚刚创建的Border对象一起使用。显示WPF时,在后面的代码中创建的边框具有所需的大小,但该大小不会转移到列。有没有办法用Code后面创建的两个元素实现元素绑定?

提前致谢,
弗兰克

1 个答案:

答案 0 :(得分:3)

设置Binding的Source属性而不是ElementName会简单得多:

binding.Source = border;