Как заставить прокрутку Windows 8 Metro реагировать на колесико мыши? - PullRequest
7 голосов
/ 11 марта 2012

В настоящее время я пишу приложение для Windows 8, используя Metro и C #.В моем приложении я использую комбинацию scrollviewer и gridview, чтобы показать свои данные.Моя проблема, однако, как я могу сделать его прокручиваемым с помощью колеса мыши?

В моем поиске я обнаружил MouseWheelParameters, расположенный в System.Windows.Input, но когда я пытаюсь использовать get_pageTranslation, он выдает ошибку, заявляющуюЯ не могу явно использовать метод get.

Ответы [ 3 ]

19 голосов
/ 25 апреля 2012

ScrollViewer в WinRT работает из коробки с колесом мыши. Однако в вашем сценарии действительно есть два ScrollViewer: тот, который вы создали, и тот, который находится внутри шаблона GridView. Эти два конфликта.

Чтобы решить эту проблему, я удалил ScrollViewer из шаблона GridView следующим образом:

<GridView.Template>
    <ControlTemplate>
        <ItemsPresenter />
    </ControlTemplate>
</GridView.Template>

Это похоже на работу, но может иметь другие нежелательные побочные эффекты ...

14 голосов
/ 15 марта 2012

Существуют стили по умолчанию для однонаправленной прокрутки в 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 голосов
/ 11 марта 2012

«get_pageTranslation» на самом деле является свойством « PageTranslation » для MouseWheelParameters, доступ к нему можно получить, сказав:

wheelParameters.PageTranslation

this:

get_PageTranslation()

это имя метода, который реализует свойство PageTranslation, но он недоступен из приложений C # или C ++.

...