我的页面上有以下结构:

默认情况下,在ScrollBar上有一个ScrollViewer。
var scrollbars = this.ScrollView.GetDescendantsOfType<ScrollBar>().ToList();
_scrollBar = scrollbars.FirstOrDefault(x => x.Orientation == Orientation.Horizontal);我将_scrollBar值绑定到滑块的值,将最大值绑定到最大值。
var valueBinding = new Binding();
valueBinding.Source = _scrollBar;
valueBinding.Mode = BindingMode.TwoWay;
valueBinding.Path = new PropertyPath("Value");
BindingOperations.SetBinding(this.Slider, Slider.ValueProperty, valueBinding);
var maximumBinding = new Binding();
maximumBinding.Source = _scrollBar;
maximumBinding.Mode = BindingMode.OneWay;
maximumBinding.Path = new PropertyPath("Maximum");
BindingOperations.SetBinding(this.Slider, Slider.MaximumProperty, maximumBinding);当我打开页面时,会有一个滑块和默认的滚动条。当我滑动/滚动scrollViewer时,滑块和滚动条同步滑动/滚动。现在,当我移动滑块时,滚动条也在移动,而不是scrollViewer。也不会触发滚动条滚动事件。当我用鼠标指针移动滚动条时,滑块和scrollViewer都在移动,并触发滚动条滚动事件。
为了能够移动滑块和scrollViewer同步移动,我需要更改什么?
非常感谢
发布于 2014-03-06 18:01:51
您可以实现附加的属性/行为,该属性/行为将为绑定到ScrollViewer的偏移集添加支持。您的行为对象将响应属性值更改,方法是在ScrollToVerticalOffset()上调用ScrollViewer,并通过更新属性值来响应ViewChanged事件。
发布于 2014-03-06 14:53:11
我使用但使用事件处理程序而不是绑定生成了相同的功能。除了我的方法之外,我使用的是滚动查看器的HorizontalOffset属性,而不是ScrollViewer中的水平滚动条。也许这对你有用?
这是我怎么做的一个例子。
抱歉,它在VB中
我认为这里唯一缺少的是,我将滑块的最大值设置为100。
私有子System.Windows.RoutedPropertyChangedEventArgs(Of myslider_ValueChanged(发送方为System.Object,e为System.Object 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_ScrollChanged(发送方为System.Object,e为System.Object
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 Subhttps://stackoverflow.com/questions/22227009
复制相似问题