C# 在ScrollViewer上手动滚动滚动条
我的页面上有以下结构: 默认情况下,ScrollViewer上有一个滚动条C# 在ScrollViewer上手动滚动滚动条,c#,windows-runtime,scrollviewer,C#,Windows Runtime,Scrollviewer,我的页面上有以下结构: 默认情况下,ScrollViewer上有一个滚动条 var scrollbars = this.ScrollView.GetDescendantsOfType<ScrollBar>().ToList(); _scrollBar = scrollbars.FirstOrDefault(x => x.Orientation == Orientation.Horizontal); 当我打开我的页面时,有一个滑块和默认的滚动条。当我滑动/滚动scrollVi
var scrollbars = this.ScrollView.GetDescendantsOfType<ScrollBar>().ToList();
_scrollBar = scrollbars.FirstOrDefault(x => x.Orientation == Orientation.Horizontal);
当我打开我的页面时,有一个滑块和默认的滚动条。当我滑动/滚动scrollViewer时,滑块和滚动条都同步滑动/滚动。现在,当我移动滑块时,滚动条也会移动,但滚动查看器不会移动。滚动条滚动事件也不会触发。当我用鼠标指针移动滚动条时,滑块和scrollViewer都在移动,scrollbar scroll事件被触发
我需要更改什么才能移动滑块和scrollViewer同步移动
非常感谢我使用事件处理程序而不是绑定生成了相同的功能。除此之外,我做这件事的方式有一个很大的不同,那就是我使用了Scrollviewer的HorizontalOffset属性,而不是Scrollviewer中的水平滚动条。也许这对你有用 这是我如何做到这一点的一个例子 很抱歉,它在VB中 我认为这里唯一缺少的是,我将滑块的最大值设置为100 私有子myslider_值已更改(发件人作为System.Object,e作为System.Windows.RoutedPropertyChangedEventArgs(属于System.Double)) 试一试
Dim sliderPercentage As Integer = myslider.Value
If (sliderPercentage > 0) Then
sv.ScrollToHorizontalOffset((sv.ScrollableWidth / 100) * myslider.Value)
myscrollviwer.ScrollToHorizontalOffset((myscrollviwer.ScrollableWidth / 100) * myslider.Value)
Else
sv.ScrollToHorizontalOffset(0)
myscrollviwer.ScrollToHorizontalOffset(0)
End If
Catch ex As Exception
End Try
End Sub
私有子myscrollviwer\u ScrollChanged(发送方为System.Object,e为System.Windows.Controls.ScrollChangedEventArgs)
您可以实现附加的属性/行为,该属性/行为将添加对绑定到
ScrollViewer
偏移量的支持。您的行为对象将通过调用ScrollViewer
上的ScrollToVerticalOffset()
来响应属性值更改,并通过更新属性值来响应ViewChanged
事件。谢谢,我也尝试了此操作,但没有正常工作。你能发布一个代码示例吗?
Dim sliderPercentage As Integer = myslider.Value
If (sliderPercentage > 0) Then
sv.ScrollToHorizontalOffset((sv.ScrollableWidth / 100) * myslider.Value)
myscrollviwer.ScrollToHorizontalOffset((myscrollviwer.ScrollableWidth / 100) * myslider.Value)
Else
sv.ScrollToHorizontalOffset(0)
myscrollviwer.ScrollToHorizontalOffset(0)
End If
Catch ex As Exception
End Try
End Sub
Try
Dim scrollPercentage As Double = 0
If (myscrollviwer.HorizontalOffset > 0) Then
scrollPercentage = (myscrollviwer.HorizontalOffset / myscrollviwer.ScrollableWidth) * 100
myslider.Value = scrollPercentage
Else
myslider.Value = 0
End If
Catch ex As Exception
End Try
End Sub