2010-08-15 48 views
2

我想知道是否有任何方法强制滚动条滚动画布。 我放置在滚动视图的画布,我覆盖了measureoverride方法。当我到达画布可见部分的末端时,滚动条会显示。不过,我希望画布滚动,因为现在,尽管滚动条显示,画布不跟随项目。我希望你能理解我,对不起我的英语不好:)如何强制滚动条滚动画布

+0

您能否提供一些详细信息,我根本无法理解您的问题! – akjoshi 2010-08-16 07:35:03

+0

我认为这很清楚,答案给了我想找的信息。对于OP来说,接受答案会有好处! – JeffHeaton 2014-07-30 18:28:48

回答

2

让我试试,

1)您有一个托管滚动查看器中的画布。
2)当画布大小增加时,滚动查看器出现。 [因为您已将水平或垂直滚动​​条的可见性设置为自动]
3)您想要的是,当您到达画布的末端时[画布的大小越来越大,滚动查看器的滚动条就会出现]希望滚动查看器的滚动条自动滚动以显示额外的空间。

如果上述问题是正确的。答案在这里。

您必须根据画布的ActualWidth或ActualHeight进行计算,并相应地将该值设置为ScrollToHorizontalOffsetScrollToVerticalOffset属性。

2

下面的示例将显示一个蓝色画布上的红色圆圈,如果它不适合窗口,它将具有垂直和水平滚动条。

<Window x:Class="WpfApplication.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="300" Width="300"> 

    <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"> 
     <Canvas Width="500" Height="500" Background="Yellow"> 
      <Ellipse 
       Stroke="Red" StrokeThickness="10" 
       Width="{Binding Path=ActualWidth, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Canvas}}}" 
       Height="{Binding Path=ActualHeight, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Canvas}}}" /> 
     </Canvas> 
    </ScrollViewer> 

</Window>