1

我有一个需要时刻关注的框架元素。为此,我BringIntoView()会在超出范围时使用。但是,我注意到它BringIntoView()不能很好地处理速度。当 UI 被快速操作时(在我的例子中,它是一个包含选择器的时间线),BringIntoView()似乎无法跟上。当时间线中的选择器快速移动到容器边界之外时,BringIntoView()将(似乎)尝试通过将选择器移动到远离边界的地方来预测这种速度。

Instead of a smooth scrolling effect that takes place when the selector is moved slowly, instead what we get is a jittery scroll with the selector constantly going back and forth between being at the edge of the container and in the middle of it. 几乎就好像它无法处理速度并放弃尝试通过将框架元件尽可能远离容器边界来进行精确运动。

我不知道如何BringIntoView()工作,但我想要类似的东西,可以预测与框架元素的定位相比需要滚动的距离。还有其他类似“ BringIntoView()”的东西吗?

4

1 回答 1

0

经过大量搜索,我遇到了这个线程:

https://social.msdn.microsoft.com/Forums/vstudio/en-US/2d0d202b-caf7-4d71-a61f-bcaa33565cdd/jumpy-slider-control-behavior?forum=wpf

摆脱滑块中抖动/跳跃行为的解决方案与“BringIntoView()”完全无关,而是与控件后面的双向值绑定的速度有关。添加Delay=1到绑定消除了控件中的任何紧张行为。它实质上为双向绑定增加了 1 毫秒的延迟,从而允许 UI 有时间相应地更新。

有一个权衡;由于 1 毫秒的延迟,UI 不太流畅。但这是一个很小的牺牲,至少对我来说。

于 2015-04-03T21:10:37.317 回答