绑定到 XAML 属性声明中的父级

本文关键字:声明 XAML 属性 绑定 | 更新日期: 2023-09-27 18:34:26

我正在尝试在 XAML "属性设置器"中绑定到属性。在此位置的绑定似乎与在"正常"位置的绑定发生在相同的层次结构中。有谁知道如何在那里绑定东西?

我也尝试使用 RelativeSource 来获取父级(这更好,因为这是我真正想要做的,而不是复制它)但没有骰子。

<loc:MyType Target="{Binding ElementName=Editor, Path=TextArea, Converter={loc:EditorAdapterConverter}}">
    <loc:MyType.PopupActions>
        <loc:BackspaceHideAction Target="{Binding ElementName=Editor, Path=TextArea, Converter={loc:EditorAdapterConverter}}" /> //Binding doesn't work
        <loc:KeyAction Action="Show" Key="Space" Modifiers="LeftCtrl" />
        <loc:KeyAction Action="Hide" Key="Escape" />
    </loc:MyType.PopupActions>
</loc:MyType>

相关信息:BackspaceHideAction继承自FrameworkElement,并具有一个名为Target的依赖属性(实际上与MyType相同)。我也需要在BackspaceHideAction中访问此Target - 它也不一定是那里的 DP 属性。

MyType.PopupActions 是声明为 PopupActionList : List<PopupAction> 的 MyType 上的依赖项属性。

目前假设我无法绑定的原因是我嵌套在属性实例中。类似的绑定在其他地方也有效(只是上面的一行),所以绑定的类型应该不是问题。只是上下文。

绑定到 XAML 属性声明中的父级

做一些进一步的测试,我发现了为什么它不起作用。

MyType 上的依赖属性PopupActions被声明为PopupActionList - 没有什么花哨的。但是属性不会自动输入到 WPF 元素的类似"DOM"的结构中,这并不奇怪(在你弄清楚之后,一如既往)。

但是,通过添加一些代码来调用MyType.AddLogicalChild,每个单独的 PopupAction 作为项目,一切正常!(到目前为止)