我正在尝试将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
答案 0 :(得分:2)
OneTime
看起来不对劲。我想您要使用OneWay
或TwoWay
。查看the BindingModes
修改强>
由于OneWay
和ActualWidth
无法解决您的问题,我建议您使用工具来调试绑定。我使用Snoop因为它是免费的,但还有其他人。在没有这样的工具的情况下调试WPF会很痛苦。
答案 1 :(得分:1)
您可能希望绑定到ActualWidth
而不是Width
。
Width
是布局过程中的输入 - 您可以(但不必)指定。
ActualWidth
是布局过程的输出 - 它是您在屏幕上看到的实际宽度。这部分取决于Width
(如果存在),但也会考虑其他因素(特别是如果您未在XAML中明确设置Width
)。