绑定到 object 树中的 non-existing/inheritance 节点

Bind to non-existing/inheritance node in object tree

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

情况

我从支持继承的 "custom" 文件格式中生成了一个 object 树(parent 可以在当前或上层范围内的任何地方)

这不是 C# 或伪代码:)

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

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

现在结果如下 "access keys"

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

加上仅因为 fooExtension 具有 foo 作为 parent

而存在的派生密钥 /container/fooExtension/a

object 树可以使用以下方式浏览:

代表每个节点实现INotifyPropertyChangedINotifyPropertyChangingIEnumerable<ConfigField>

的class

事件没有使树向上冒泡

问题

我想绑定到 /container/fooExtension/a/Some/Not/Existing/Key 而不创建节点(因为那样会破坏继承)并且不在节点周围创建整个观察者 class树(因为这是正确维护和实施的噩梦)

目前的想法

这个问题现在困扰了我整个周末...我想出的解决方案都是垃圾(创建一个新的 Binding class 来订阅正确的 parents ) 或实施的噩梦(观察者 class、"reference" object 观察最高可用密钥,...)

终于

有没有可能有人在这附近的某个地方施展了魔术?

感谢您的宝贵时间

通过使用 hacky 而不是很好的开销方式解决了...

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

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