最近,我看到约走可视化树是不好的做法(一些评论在这里例如 ),但我还没有看到或发现为什么这将是不好的做法的理由。
在一个项目中我的工作有相当多的树遍历,所以我不知道我是否应该去改变这一切别的东西,还是让它是因为它是。
所以,我想我的主要问题是在这里,如果视觉树的遍历还真是不好的做法,更重要的是,如果是, 为什么 ?
而且,当(如果有的话?)会是好走可视化树?
最近,我看到约走可视化树是不好的做法(一些评论在这里例如 ),但我还没有看到或发现为什么这将是不好的做法的理由。
在一个项目中我的工作有相当多的树遍历,所以我不知道我是否应该去改变这一切别的东西,还是让它是因为它是。
所以,我想我的主要问题是在这里,如果视觉树的遍历还真是不好的做法,更重要的是,如果是, 为什么 ?
而且,当(如果有的话?)会是好走可视化树?
走了可视树往往达闯入通过WPF“自然”机制提供的抽象,手动执行什么样的框架应该由自己做(通过XAML声明,绑定等)。 这是一个黑客,简单地说。 有时,它表示一个不知道如何正确使用WPF。 (这是难以确实使用,顺便说一句)。
你真的无法知道在任何时候都可视化树是否完整与否; WPF可能没有产生所有的控制,但(例如,在填充有许多项的列表)。 为了解决这个问题,你需要实现的保障措施,处理LayoutUpdated
事件等,这使你的代码过于复杂。
我会说,首先,你会得到各种对这个问题的看法。
在您链接到的例子,我想说的可视树遍历在这种情况下是错误的解决方案 - WPF是带有某种MVVM或MVP状花纹通常最好使用,这意味着数据绑定,如果你绑定适当的结构就可以消除很多东西你可能已经与视觉树的遍历完成。
我只倾向于使用它的“特殊效果”,因为它是。 大内部WPF应用程序,我的工作有一定的视觉树的遍历代码,增加了一些方便的行为几ItemControl
在可重复使用的方式S(很多的乐趣与类型参数,使一个工作)。
我们也走可视化树中的一些附加属性,它们控制特定用户是否被允许来操作UI的某些部分系统的一部分的实施。 这是因为该系统具有不管底层数据说什么变换可视化树 - 用户权限表,其数据不应该担心在每一个步骤一个横切关注点。
基本上我们只是做它做的事情到UI本身 - 不能以更方便的方式来实现UI行为(和说实话,大多数其他方式在大多数情况下,更方便),或实际调整基于可视化树一些因素是不是在数据方便地表达了UI的绑定到。 如果它是关于操纵数据,我们始终做到在后端数据结构或的ViewModels。
这取决于你为什么走可视化树。 有很多可自动化您的观点和大多数情况下,他们更然后足以做非常复杂的控制机制。
在我多年与WPF我使用创造了无法以其他方式做了一些非标准的行为,只有当可视树行走的工作(或者我没找到其他的方法来做到这些)。 我考虑走可视化树像任何其他例如反射的工具。 这是好事,知道它,它有它的应用和缺点。