从usercontrol绑定到父usercontrol的属性

Nei*_*eil 2 wpf binding user-controls properties parent

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

Roh*_*ats 7

你可以像这样绑定它在xaml中 -

<Toolbar Mode="{Binding Path=Mode, RelativeSource={RelativeSource
      Mode=FindAncestor, AncestorType = UserControl, AncestorLevel =2}}"/>
Run Code Online (Sandbox Code Playgroud)

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

<Toolbar Mode="{Binding Path=Mode, ElementName=GraphUserControl}"/>
Run Code Online (Sandbox Code Playgroud)

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

<UserControl x:Name="GraphUserControl"></UserControl>
Run Code Online (Sandbox Code Playgroud)

或者如果你不打算在代码背后,你可以看看这个有用的帖子去祖先的父母 - Visual Tree Navigator