2012-03-11 15 views
7

Obecnie piszę aplikację dla systemu Windows 8 przy użyciu Metro i C#. W mojej aplikacji używam kombinacji scrollviewera i gridview, aby pokazać moje dane. Mój problem polega jednak na tym, w jaki sposób można go przewijać za pomocą kółka myszy?W jaki sposób mogę przekonwertować przeglądarkę przewijania w Windows 8 na kółko myszy?

Podczas moich poszukiwań znalazłem MouseWheelParameters zlokalizowany w System.Windows.Input, ale kiedy próbuję użyć get_pageTranslation, daje błąd stwierdzając, że nie mogę jawnie użyć metody get.

Odpowiedz

2

W "get_pageTranslation" jest rzeczywiście "PageTranslation" własność na MouseWheelParameters, to dostęp do niego, mówiąc:

wheelParameters.PageTranslation 

to:

get_PageTranslation() 

to nazwa metody, która implementuje Właściwość Pageranslation, ale nie jest dostępna z aplikacji C# lub C++.

+0

Btw, wierzę że w podglądzie konsumenta przewijarka może być skonfigurowana do automatycznego przewijania za pomocą kółka myszy. Ale nie jestem w 100% pewny, jak to zrobić. –

+0

Nie udało mi się go znaleźć, ale wydawałoby się, że działa to dla mnie w pewnym sensie. –

14

Istnieją domyślne style dla jednokierunkowego przewijania w 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> 

Użyj tych stylów przewijanie kółkiem myszy. Może być konieczne kliknięcie, aby skupić się na ScrollViewer, aby się przesunął.

<ScrollViewer Style="{StaticResource HorizontalScrollViewerStyle}"> 
    <StackPanel ... /> 
</ScrollViewer> 
19

ScrollViewer w WinRT działa po wyjęciu z pudełka za pomocą kółka myszy. Jednak w twoim scenariuszu są naprawdę dwa ScrollViewers, ten, który utworzyłeś i ten w szablonie GridView. Te dwa konflikty.

Aby rozwiązać ten problem, usunąłem ScrollViewer z GridView szablon następująco:

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

To wydaje się działać, ale może mieć inne niepożądane skutki uboczne ...

+1

... dziękuję! – Ripityom

+0

Chcę tylko zaznaczyć, że nie można wybrać elementów "Swipe select" w widoku siatki za pomocą dotyku. Więc jeśli potrzebujesz przesuwania palcem, musisz spróbować czegoś innego. – oXeNoN

+4

jeśli potrzebujesz zarówno przewijania kółkiem myszy, jak i PRZECIĄGNIĘCIA, możesz użyć metody AddHandler do przechwycenia zdarzenia PointerWheelChanged i ustawienia e.Handled = false. Pełne szczegóły tutaj: http://briandunnington.github.com/gridview-in-a-scrollviewer.html – briandunnington

Powiązane problemy