我到处搜索所以如果我正在进行双重发帖,请原谅我。
我需要绑定Border Control的ActualHeight属性。我已经用这篇文章开始了: Binding to ActualWidth does not work
反过来把我带到了这个博客: http://darutk-oboegaki.blogspot.com/2011/07/binding-actualheight-and-actualwidth.html
我已经为SizeChange实现了一个Class,并且在代码领域看起来都很好。
我的控件是在运行时创建的,所以我创建了控件,并根据基于XAML的代码为“IsEnabled”添加了一个属性
border.SetValue( SizeChange.IsEnabledProperty, true );
我通过调试代码检查了它,并且正确地更新了SizeChange.ActualHeight。接下来我试图将另一个运行时创建的控件绑定到这个:
Binding weekHeight = new Binding( "SizeChange.ActualHeight" );
weekHeight.Mode = BindingMode.OneWay;
weekHeight.Source = border;
border2.SetBinding( Border.HeightProperty, weekHeight );
现在,基于XAML的解决方案需要绑定“local_ui:SizeChange.ActualHeight”但是如果我尝试这会导致运行时错误,而是我使用了“SizeChange.ActualHeight”,但它没有更新大小我的控制权。
我试图让事情保持原状,所以如果我错过了什么,请原谅我。
非常感谢!
答案 0 :(得分:2)
所以问题是(实质上)如何从代码隐藏绑定自定义附加属性。诀窍是使用PropertyPath
而不是字符串来设置绑定路径。使用实际依赖项属性(SizeChange.ActualHeightProperty)构造它,如下所示:
binding.Path = new PropertyPath(SizeChange.ActualHeightProperty);
所以绑定构造函数应如下所示:
Binding weekHeight = new Binding
{
Path = new PropertyPath(SizeChange.ActualHeightProperty),
Mode = BindingMode.OneWay,
Source = border
};
border2.SetBinding( Border.HeightProperty, weekHeight );