Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF-跳跃/抖动滑块控制导致“BringIntoView”出现问题_C#_Wpf_Xaml_Scroll_Frameworkelement - Fatal编程技术网

C# WPF-跳跃/抖动滑块控制导致“BringIntoView”出现问题

C# WPF-跳跃/抖动滑块控制导致“BringIntoView”出现问题,c#,wpf,xaml,scroll,frameworkelement,C#,Wpf,Xaml,Scroll,Frameworkelement,我有一个框架元素,我需要时刻保持在视野中。为了做到这一点,每当它出界时,我都会使用BringIntoView。然而,我注意到BringIntoView并不能很好地处理快速性。在我的例子中,当用户界面被快速操纵时,它是一个包含选择器的时间线,BringIntoView似乎无法跟上。当时间线中的选择器快速移动到容器边界之外时,BringIntoView似乎会尝试通过将选择器移动到远离边界的地方来预测这种速度 P>而不是在选择器缓慢移动时发生的平滑滚动效果,取而代之的是一个抖动的滚动体,选择器在容器

我有一个框架元素,我需要时刻保持在视野中。为了做到这一点,每当它出界时,我都会使用BringIntoView。然而,我注意到BringIntoView并不能很好地处理快速性。在我的例子中,当用户界面被快速操纵时,它是一个包含选择器的时间线,BringIntoView似乎无法跟上。当时间线中的选择器快速移动到容器边界之外时,BringIntoView似乎会尝试通过将选择器移动到远离边界的地方来预测这种速度

<> P>而不是在选择器缓慢移动时发生的平滑滚动效果,取而代之的是一个抖动的滚动体,选择器在容器边缘和中间之间来回地来回移动。这几乎就好像它无法处理快速性,并且放弃了通过尽可能远离容器边界夹住框架元素来进行精确移动的尝试


我不知道BringIntoView是如何工作的,但我希望类似的东西能够预测需要滚动的距离,与框架元素的位置相比。还有什么类似于BringIntoView的吗?

经过大量搜索,我发现了以下线索:

消除滑块中的抖动/跳跃行为的解决方案与BringIntoView无关,而是与控件后面的双向值绑定的快速性有关。向绑定添加Delay=1可以消除控件中的任何抖动行为。它本质上为双向绑定增加了1毫秒的延迟,允许用户界面有时间进行相应的更新


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

你试过ScrollIntoView吗?@ChrisW。我正在使用的元素没有ScrollIntoView,但是我可能已经通过更改调用BringIntoView的时间来修复了我的问题。编辑:不,不用担心。我无法移动它,因为它的许多属性依赖于UI中的信息。它的宽度、画布、左侧位置和高度都取决于UI中的内容。我只是想知道为什么BringIntoView会这样做,我该如何改变它。