c# - 在 XAML 属性声明中绑定(bind)到父级?

标签 c# wpf xaml

我试图在 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/

相关文章:

c# - 如何在 Windows 窗体应用程序中使用 Ninject?

c# - C#和WPF用什么画折线图?

c# - WinUI XAML : Using a ResourceDictionary from another project

wpf - 如何在 DataBound 控件列表中依次启动 Storyboard

c# - WPF从图像资源设置窗口背景

c# - 是否有任何在 Windows 窗体应用程序中以最少设置使用 CefGlue 或 CefSharp 的示例?

c# - 如何在 Fluent NHibernate 中将一对一关系映射为复合键的一部分

c# - 对于带有列表框的用户控件,如何将所选项目公开到父页面?

c# - 如何为 windows7、wpf 构建自定义 shell?

c# - 如何通过 rs232 与秤通信