从usercontrol绑定到父usercontrol的属性

时间:2012-07-19 14:02:01

标签: wpf binding properties user-controls parent

假设我在窗口中有一个名为Graph的用户控件。此用户控件包含一个网格,其中有另一个用户控件,称为工具栏。 Now Graph公开了一个名为Mode的公共属性,它使用名为ModeProperty的依赖项属性作为后备存储。我希望工具栏用户控件中的元素绑定到其祖先Graph中的Mode属性。我怎样才能做到这一点?即使只是获得对Graph的引用也证明比我预期的更难,this.parent会获得对网格的引用而不是Graph。

1 个答案:

答案 0 :(得分:7)

你可以像这样绑定xaml -

<Toolbar Mode="{Binding Path=Mode, RelativeSource={RelativeSource
      Mode=FindAncestor, AncestorType = UserControl, AncestorLevel =2}}"/>

你也可以在你的绑定中使用ElementName -

<Toolbar Mode="{Binding Path=Mode, ElementName=GraphUserControl}"/>

您必须在要绑定到的userControl上设置x:Name属性 -

<UserControl x:Name="GraphUserControl"></UserControl>

或者,如果您不打算使用代码,您可以查看这个有用的帖子,以便前往祖先的父母 - Visual Tree Navigator