ScrollViewer中的ScrollViewer

时间:2012-09-08 00:42:37

标签: c# wpf windows-7 touch

我想在Windows 7上创建一种体验(使用触摸),我可以在其中创建一个只能垂直滚动的ScrollViewer(屏幕大小)。在ScrollViewer内部,我将有几个其他ScrollViewer控件只能水平滚动,就像书架一样。

我能做到这一点,但我遇到麻烦的地方是触摸和事件的焦点。如果我水平平移,我只想要触摸的水平ScrollViewer滚动,如果我垂直平移,我只想要外部ScrollViewer滚动。

目前,(没有代码干预),嵌套ScrollViewer控件意味着水平(内部)ScrollViewer控件采用触摸焦点,外部垂直ScrollViewer似乎永远不会触发滚动事件。

我想我可以使用附加事件或预览事件来捕捉触摸动作和火焰滚动方法,但我不确定实现这样的最佳方法。

以下是我所拥有的XAML的概述:

<ScrollViewer x:Name="OutterScrollViewer" HorizontalScrollBarVisibility="Disabled" PanningMode="VerticalOnly">
    <StackPanel Orientation="Vertical">
            <ScrollViewer x:Name="ScrollViewer1" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Disabled">
                             ...content...
            </ScrollViewer>
            <ScrollViewer x:Name="ScrollViewer2" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Disabled">
            ...content...
            </ScrollViewer>
            <ScrollViewer x:Name="ScrollViewer3" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Disabled" PanningMode="HorizontalOnly">
            ...content...
            </ScrollViewer>
    </StackPanel>
</ScrollViewer>

1 个答案:

答案 0 :(得分:0)

我有同样的问题,我希望外面的水平滚动和内部我有3个滚动查看器,我想垂直滚动。这是一些代码:

<ScrollViewer VerticalScrollMode="Disabled" VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Visible" HorizontalScrollMode="Enabled">
    <ScrollViewer VerticalScrollMode="Auto" VerticalScrollBarVisibility="Auto">
        Code
    </ScrollViewer>
    ...
</ScrollViewer>