1

我正在编写一个 WPF 应用程序,我正在尝试找出最好的绑定方法,但只提出了“hack”解决方案,我希望有更好的方法。

我在 Grid 中有一个 Border 对象(从 FrameworkElement 派生)。由于子 TextBlock 的文本发生变化,边框的大小可能会发生变化。边框的位置可能会改变,因为网格中的其他东西可能会重新排列边框所在的单元格。

我想从屏幕的左下角画一条线到边框对象的确切中心。无论边框在屏幕上的大小或位置如何,位于边框正中的线的端点必须始终保持在中心。

我怎样才能做到这一点?

我的想法是绑定到依赖属性似乎是处理这个问题的理想方式。我可以在 Binding 对象上使用 IValueConverter 来计算确切的中心,因为它是 ActualWidth、ActualHeight 和 TranslatePoint() 以找到左上角。但是,我不知道我应该绑定哪个依赖属性,当边框改变大小和/或位置时会提醒我。

4

1 回答 1

0

我认为您想对自身的所有ActualXxx属性进行多重绑定,并且它包含在:BorderGrid

<MultiBinding Converter="{StaticResource MyConverter}">#
    <Binding Path="ActualWidth" ElementName="_border"/>
    <Binding Path="ActualHeight" ElementName="_border"/>
    <Binding Path="ActualWidth" ElementName="_grid"/>
    <Binding Path="ActualHeight" ElementName="_grid"/>
</MultiBinding>

您的另一个选择是在代码中执行此操作并覆盖该OnRender()方法。该方法可以调用基类实现,然后画线。然后,只要上述属性之一发生更改,您就需要使控件无效。

于 2009-04-06T07:26:25.063 回答