宽度属性的WPF数据绑定

时间:2011-05-11 16:08:51

标签: wpf data-binding

我正在尝试将Canvas的Width属性绑定到Shape实例的Width属性。因此,当“画布宽度”获得新值

时,应更新“形状宽度”

我希望在没有XAML的情况下在代码中执行此操作,因为我在运行时创建了这些元素。

我尝试了这个,但它没有用(代码在我的Canvas中):

Binding binding = new Binding();
binding.Mode = BindingMode.OneTime;
binding.Source = this;
binding.Path = new PropertyPath("Width");
shape.SetBinding(FrameworkElement.WidthProperty, binding);

非常感谢你的帮助!

ksman

2 个答案:

答案 0 :(得分:2)

OneTime看起来不对劲。我想您要使用OneWayTwoWay。查看the BindingModes

修改

由于OneWayActualWidth无法解决您的问题,我建议您使用工具来调试绑定。我使用Snoop因为它是免费的,但还有其他人。在没有这样的工具的情况下调试WPF会很痛苦。

答案 1 :(得分:1)

您可能希望绑定到ActualWidth而不是Width

Width是布局过程中的输入 - 您可以(但不必)指定。

ActualWidth是布局过程的输出 - 它是您在屏幕上看到的实际宽度。这部分取决于Width(如果存在),但也会考虑其他因素(特别是如果您未在XAML中明确设置Width)。