Fed*_*gel 7 c# mouse scrollviewer microsoft-metro windows-8
我目前正在使用Metro和C#为Windows 8编写应用程序.在我的应用程序中,我使用scrollviewer和gridview的组合来显示我的数据.不过我的问题是,如何用鼠标滚轮滚动它?
在我的搜索中,我发现MouseWheelParameters位于System.Windows.Input中,但是当我尝试使用get_pageTranslation时,它会给出一个错误,指出我无法显式使用get方法.
Kri*_*ten 19
WinRT中的ScrollViewer使用鼠标滚轮开箱即用.但是,在您的场景中,实际上有两个ScrollViewers,您创建的ScrollViewers和GridView模板中的一个.这两个冲突.
为了解决这个问题,我从GridView模板中删除了ScrollViewer,如下所示:
<GridView.Template>
<ControlTemplate>
<ItemsPresenter />
</ControlTemplate>
</GridView.Template>
Run Code Online (Sandbox Code Playgroud)
这似乎有效,但它可能有其他不必要的副作用......
kin*_*ple 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>
Run Code Online (Sandbox Code Playgroud)
使用这些样式滚动鼠标滚轮.您可能需要单击以将焦点放在ScrollViewer上,以便它移动.
<ScrollViewer Style="{StaticResource HorizontalScrollViewerStyle}">
<StackPanel ... />
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)
“get_pageTranslation”实际上是MouseWheelParameters 上的“ PageTranslation ”属性,您可以通过以下方式访问它:
wheelParameters.PageTranslation
Run Code Online (Sandbox Code Playgroud)
这:
get_PageTranslation()
Run Code Online (Sandbox Code Playgroud)
是实现 PageTranslation 属性的方法的名称,但无法从 C# 或 C++ 应用程序访问它。