0

这是我在WPF中开发复杂控件时经常遇到的问题。

我想将一些属性绑定到多个父级。

我目前正在将它与 RelativeSource 和 TemplatedParent 一起使用:

Value="{Binding PropertyToBind, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"

但是有了这个,你可以绑定到直接父级,我有4个级别......所以我做了4个绑定,最终绑定到好的值。

我无法删除我的 4 级对象,它们是复杂的控件...

例如,我的第一级是我的操纵杆控制。在我的操纵杆中,我有一个滑块控件(第二级)来上下移动。在我的滑块中,我有一个按钮(第 3 级)。在我的按钮中,我有一个文本(第 4 级),我想将它绑定到我的第 1 级(操纵杆)中的属性。

我所做的是将我的文本绑定到按钮中的一个属性,然后我将按钮的属性绑定到滑块中的属性,等等.. 到操纵杆。有时,我需要创建自定义控件(添加了可以绑定的属性)。

这不是我的场景,这只是一个例子(是的,在这个我们可能会删除一些级别,但不是我的)我不想回答:删除这个或这个对象......

有没有办法直接绑定到多个级别?每个级别都是 Style 中的一个 ControlTemplate。

我正在使用 WPF 4、.NET 4.0、Blend 4、Visual Studio 2010

4

2 回答 2

2

您不应该这样做,它会破坏封装并引入不必要的依赖项。你描述的是要走的路:

我所做的是将文本绑定到按钮中的属性,然后将按钮的属性绑定到滑块中的属性,等等。

于 2012-08-29T12:48:17.507 回答
1

RelativeSource您是否尝试过绑定中的其他排列?具体来说,您可以使用它RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type SomeType}}来查找您上方的特定控件,它看起来可能适用于您的场景。

于 2012-08-29T12:49:41.757 回答