c# - 如果两个涉及的对象都是在代码隐藏中创建的,则元素绑定(bind)

标签 c# wpf xaml binding element-binding

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

<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”是具有要使用的宽度的边框。

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

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

并使用新的 border.Name 进行绑定(bind)。

binding.ElementName = border.Name;

看来,元素绑定(bind)不适用于刚刚创建的 Border 对象。当显示 WPF 时,在后面的代码中创建的边框具有所需的大小,但该大小不会传输到列。有什么方法可以实现与代码隐藏中创建的两个元素的元素绑定(bind)?

提前致谢,
弗兰克

最佳答案

设置绑定(bind)的 Source 属性而不是 ElementName 会简单得多:

binding.Source = border;

关于c# - 如果两个涉及的对象都是在代码隐藏中创建的,则元素绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44720574/

相关文章:

c# - 从 C# 代码运行单个 TestFixtures

c# - XPathDocument 是否使用构建后的内存流?

c# - 如何为 ObservableCollections 的线程亲和性编写失败测试

c# - 调整边框大小的问题

wpf - WPF 对话框的默认背景颜色是什么?

xaml - xaml 中的切换开关大小

c# - 使用 Parallel.for 循环的文件 I/O 问题

css - XAML 中的两个 SVG 元素显示不同的大小,尽管请求的高度和宽度相同

wpf - 如何更改 MahApps 中所有命令按钮的前景色

c# - .Equals 和 == 有什么区别