绑定到对象树中不存在/继承节点

本文关键字:继承 节点 不存在 对象 绑定 | 更新日期: 2023-09-27 17:57:15

我目前面临着一个我无法在脑海中解决的问题......所以我来到这里,希望你们中的一个人看到我目前寻求的解决方案......

情况

我得到了一个支持继承的"自定义"文件格式生成的对象树(父级可以是当前或上部范围中的任何位置)

这不是 C# 或伪代码:)

class foo
{
    a = "foobar";
};
class container
{
    class bar
    {
        b = "foobar";
    };
    class fooExtension : foo
    {
        //contains 'a' with value "foobar"
        b = "foo";
    };
};

(对于那些想知道的人,是的,这是来自游戏 ArmA)

现在,这将导致以下"访问密钥"

/foo
/foo/as
/container
/container/bar
/container/bar/b
/container/fooExtension/b

加上派生密钥/container/fooExtension/a,它仅因为fooExtension具有foo作为父级而存在

可以使用以下命令浏览该对象树:

  • GetKey(string, AccessTypeEnum) 提供对单个关键目标的最大控制
  • [int]获取单个子节点
  • [int, int]获取一系列子节点
  • [string] 使用 GetKey 检查对象树中给定的字符串键

表示每个节点的类实现INotifyPropertyChangedINotifyPropertyChangingIEnumerable<ConfigField>

事件不会让这棵树冒泡

问题

我想绑定到/container/fooExtension/a/Some/Not/Existing/Key而不创建节点(因为这会与继承分手),也不要在节点树周围创建整个观察器类(因为这是维护和正确实现的噩梦)

当前的想法

这个问题现在困扰着我整个周末......我想出的解决方案都是垃圾(创建一个新的Binding类来订阅正确的父级)或实现的噩梦(观察者类,观察最高可用键的"引用"对象,...

最后

有人有可能在这里的某个地方有一个魔术吗?

谢谢你的时间

绑定到对象树中不存在/继承节点

通过使用

一种笨拙且不好的开销方式来解决......

事件现在将被冒泡到对象树根...这实际上是不正确的...但是解决了问题...那+一个特殊的转换器,需要em

...

如果有人有更好的解决方案,请回答