绑定到 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 上的依赖项属性。
目前假设我无法绑定的原因是我嵌套在属性实例中。类似的绑定在其他地方也有效(只是上面的一行),所以绑定的类型应该不是问题。只是上下文。
做一些进一步的测试,我发现了为什么它不起作用。
MyType
上的依赖属性PopupActions
被声明为PopupActionList
- 没有什么花哨的。但是属性不会自动输入到 WPF 元素的类似"DOM"的结构中,这并不奇怪(在你弄清楚之后,一如既往)。
但是,通过添加一些代码来调用MyType.AddLogicalChild
,每个单独的 PopupAction 作为项目,一切正常!(到目前为止)