我试图在 XAML“属性 setter ”内绑定(bind)到属性。在此位置处的绑定(bind)似乎不会与在“正常”位置处的绑定(bind)发生在同一层次结构中。有谁知道如何在那里绑定(bind)一些东西吗?
我还尝试使用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
相同)。我需要访问这个Target
也在 BackspaceHideAction
- 它实际上也不一定是 DP 属性。
MyType.PopupActions
是 MyType 的依赖属性,声明为 PopupActionList : List<PopupAction>
.
我目前假设无法绑定(bind)的原因是我嵌套在属性实例化中。类似的绑定(bind)在其他地方也有效(只是上面的行),因此绑定(bind)的类型不应该是问题。只是上下文。
最佳答案
做了一些进一步的测试,我发现了它不起作用的原因。
MyType
上的依赖属性 PopupActions
被声明为 PopupActionList
- 没什么花哨的。但是属性不会自动输入到 WPF 元素的类似“DOM”的结构中,这并不奇怪(在您弄清楚之后,一如既往)。
但是,通过添加一些代码来调用 MyType.AddLogicalChild
并将每个单独的 PopupAction 作为项目,一切正常! (到目前为止)
关于c# - 在 XAML 属性声明中绑定(bind)到父级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10642249/