绑定到对象树中不存在/继承节点
本文关键字:继承 节点 不存在 对象 绑定 | 更新日期: 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 检查对象树中给定的字符串键
表示每个节点的类实现INotifyPropertyChanged
、INotifyPropertyChanging
和IEnumerable<ConfigField>
事件不会让这棵树冒泡
问题
我想绑定到/container/fooExtension/a
或/Some/Not/Existing/Key
而不创建节点(因为这会与继承分手),也不要在节点树周围创建整个观察器类(因为这是维护和正确实现的噩梦)
当前的想法
这个问题现在困扰着我整个周末......我想出的解决方案都是垃圾(创建一个新的Binding
类来订阅正确的父级)或实现的噩梦(观察者类,观察最高可用键的"引用"对象,...
最后
有人有可能在这里的某个地方有一个魔术吗?
谢谢你的时间
通过使用
一种笨拙且不好的开销方式来解决......
事件现在将被冒泡到对象树根...这实际上是不正确的...但是解决了问题...那+一个特殊的转换器,需要em
...如果有人有更好的解决方案,请回答