C# 在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

我的页面上有以下结构:

默认情况下,ScrollViewer上有一个滚动条

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