我目前正在使用Metro和C#为Windows 8编写应用程序。在我的应用程序中,我使用scrollviewer和gridview的组合来显示我的数据。但问题是,如何用鼠标滚轮滚动它?
在我的搜索中,我发现MouseWheelParameters位于System.Windows.Input中,但是当我尝试使用get_pageTranslation时,它会给出一个错误,指出我无法显式使用get方法。
答案 0 :(得分:19)
WinRT中的ScrollViewer可以使用鼠标滚轮开箱即用。但是,在您的场景中,实际上有两个ScrollViewers,您创建的ScrollViewers和GridView模板中的一个。这两个冲突。
为了解决这个问题,我从GridView模板中删除了ScrollViewer,如下所示:
<GridView.Template>
<ControlTemplate>
<ItemsPresenter />
</ControlTemplate>
</GridView.Template>
这似乎有效,但可能有其他不必要的副作用......
答案 1 :(得分:14)
ScrollViewer中有单向滚动的默认样式
<Style x:Key="HorizontalScrollViewerStyle" TargetType="ScrollViewer">
<Setter Property="HorizontalScrollBarVisibility" Value="Auto"/>
<Setter Property="VerticalScrollBarVisibility" Value="Disabled"/>
<Setter Property="ScrollViewer.HorizontalScrollMode" Value="Enabled" />
<Setter Property="ScrollViewer.VerticalScrollMode" Value="Disabled" />
<Setter Property="ScrollViewer.ZoomMode" Value="Disabled" />
</Style>
<Style x:Key="VerticalScrollViewerStyle" TargetType="ScrollViewer">
<Setter Property="HorizontalScrollBarVisibility" Value="Disabled"/>
<Setter Property="VerticalScrollBarVisibility" Value="Auto"/>
<Setter Property="ScrollViewer.HorizontalScrollMode" Value="Disabled" />
<Setter Property="ScrollViewer.VerticalScrollMode" Value="Enabled" />
<Setter Property="ScrollViewer.ZoomMode" Value="Disabled" />
</Style>
使用这些样式滚动鼠标滚轮。您可能需要单击以将焦点放在ScrollViewer上,以便它移动。
<ScrollViewer Style="{StaticResource HorizontalScrollViewerStyle}">
<StackPanel ... />
</ScrollViewer>
答案 2 :(得分:2)
“get_pageTranslation”实际上是MouseWheelParameters上的“PageTranslation”属性,您可以通过以下方式访问它:
wheelParameters.PageTranslation
这样:
get_PageTranslation()
是实现PageTranslation属性的方法的名称,但无法从C#或C ++应用程序访问它。