将控件的当前实例绑定到附加属性

dea*_*vmc 5 wpf xaml binding

我想看看您是否可以将用户控件或窗口的当前实例绑定到在其 xaml 中定义的附加属性,例如:

<Window MyAttachedProp.Value="{Binding Self}"/>
Run Code Online (Sandbox Code Playgroud)

Col*_*ith 4

您想要MyAttachedProp.Value拥有Window对象引用吗?

您可以使用以下任一方法:

  1. {Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}

  2. 给你的窗口一个 x:Name="XXXXX"...然后用{Binding ElementName=XXXXX}它来查找它。

  3. {Binding RelativeSource={RelativeSource Self}}

  4. {Binding RelativeSource={x:Static RelativeSource.Self}}

在示例 4 中,它避免了创建新RelativeSource对象(设置ModeSelf)...相反,它指向类中已创建的静态对象RelativeSource...(这是一种非常次要且过早的优化)。

大多数人使用示例 3,因为它打字更少且阅读起来更清晰。