C# Silverlight运行时绑定到自定义依赖项对象

C# Silverlight运行时绑定到自定义依赖项对象,c#,silverlight,binding,C#,Silverlight,Binding,我到处都找过了,所以如果我发了两封邮件,请原谅我 我需要边界控件的ActualHeight属性的绑定。我已经用这篇文章开始了: 这又把我带到了这个博客: 在这里,我为SizeChange实现了一个类,并且在代码领域中一切看起来都很好 我的控件是在运行时创建的,因此我创建了该控件,并根据基于XAML的代码为“IsEnabled”添加了一个属性 border.SetValue( SizeChange.IsEnabledProperty, true ); 我已经通过调试代码进行了检查,它正在正确

我到处都找过了,所以如果我发了两封邮件,请原谅我

我需要边界控件的ActualHeight属性的绑定。我已经用这篇文章开始了:

这又把我带到了这个博客:

在这里,我为SizeChange实现了一个类,并且在代码领域中一切看起来都很好

我的控件是在运行时创建的,因此我创建了该控件,并根据基于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”,它通过了,但没有更新控件的大小

我一直努力把事情说清楚,所以如果我错过了什么,请原谅我

非常感谢

所以问题是(本质上)如何从代码隐藏绑定自定义附加属性。诀窍是使用
PropertyPath
而不是字符串来设置绑定路径。使用实际依赖项属性(SizeChange.ActualWeightProperty)构建它,如下所示:

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 );
因此绑定构造函数应该如下所示:

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 );

为什么你需要一个实际的高度?你想达到什么?漂亮的技术,顺便说一句-很好的发现!边界控件的实际高度没有更新,Silverlight bug,因此需要解决此问题,因为另一个控件需要将其高度设置为相同的高度。哦。。。我的。。。天哪。。。这么聪明难吗?!我是如此接近,但却如此遥远。。。非常感谢你们,我真的不知道你们是怎么把这些东西从稀薄的空气中吸出来的。非常感谢你的帮助!