我们TreeView
的应用程序中有以下要求:
添加项目时:
- 新添加的项目滚动到视图中
- 新添加项的父项也滚动到视图中。
- 如果它们太远而无法同时看到,则该项目优先。
这看起来很简单,只需先将父级滚动到视图中,然后再滚动子级。
问题是当你这样称呼它时:
parent.BringIntoView();
child.BringIntoView();
...只有第二个似乎有任何效果。第一个基本被忽略。
然后我尝试将第二个调用包装在BeginInvoke()
这样的调用中:
parent.BringIntoView();
Dispatcher.BeginInvoke((Action)(() => {
child.BringIntoView();
}));
哪个确实有效,但是现在您可以明显地看到TreeView
滚动两次;一次是为父母,然后是片刻之后,为孩子,这看起来很糟糕。
那么我怎样才能BringIntoView
在没有使用调度程序的双重刷新问题的情况下进行背靠背调用呢?