在XAML属性声明中绑定到父级?

时间:2012-05-17 19:26:13

标签: c# wpf xaml

我试图在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相同)。我还需要在Target中访问此BackspaceHideAction - 它实际上也不一定是DP属性。

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

我目前假设我无法绑定的原因是我嵌套在属性实例化中。类似的绑定在别处起作用(只是上面的那一行),所以绑定的类型不应该是问题。只是背景。

1 个答案:

答案 0 :(得分:2)

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

PopupActions上的依赖项属性MyType被声明为PopupActionList - 没什么特别的。但是属性不会自动进入WPF元素的'DOM'结构中,这并不令人惊讶(在您一如既往地弄明白之后)。

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