2012-03-11 14 views
7

Attualmente sto scrivendo un'app per Windows 8 usando Metro e C#. Nella mia app uso una combinazione di scrollviewer e gridview per mostrare i miei dati. Il mio problema è comunque, come posso renderlo scorrevole con una rotellina del mouse?Come posso fare in modo che un scrollviewer di Windows 8 Metro risponda alla rotellina del mouse?

Nella mia ricerca ho trovato MouseWheelParameters che si trovano in System.Windows.Input, ma quando provo a utilizzare get_pageTranslation, viene visualizzato un errore che indica che non è possibile utilizzare esplicitamente il metodo get.

risposta

2

Il "get_pageTranslation" è in realtà il "PageTranslation" proprietà sulle MouseWheelParameters, si accede dicendo:

wheelParameters.PageTranslation 

questo:

get_PageTranslation() 

è il nome del metodo che implementa il Proprietà PageTranslation, ma non è accessibile dalle applicazioni C# o C++.

+0

Btw, credo che nell'anteprima del consumatore, lo scrollviewer può essere configurato per scorrere automaticamente con la rotellina del mouse. Ma non sono sicuro al 100% come farlo. –

+0

Non sono riuscito a trovarlo, ma avrebbe molto senso –

14

ci sono stili di default per lo scorrimento unidirezionale in uno 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> 

Utilizzare questi stili per scorrere con la rotellina del mouse. Potrebbe essere necessario fare clic per dare fuoco a ScrollViewer in modo che si muova.

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

Il ScrollViewer in WinRT funziona senza problemi con la rotellina del mouse. Tuttavia, nel tuo scenario ci sono in realtà due ScrollViewer, quello che hai creato e quello all'interno del modello di GridView. Questi due conflitti.

Per risolvere questo problema, ho rimosso lo ScrollViewer dal modello GridView come segue:

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

Questo sembra funzionare, ma può avere altri effetti collaterali indesiderati ...

+1

sembra funzionare per me ... grazie! – Ripityom

+0

Voglio solo precisare che non sarà possibile selezionare gli elementi "Scorri selezione" nella vista griglia utilizzando il tocco. Quindi, se hai bisogno di selezionare lo scorrimento, dovrai provare qualcos'altro. – oXeNoN

+4

se è necessario sia lo scorrimento della rotellina del mouse sia il comando di scorrimento a selezione, è possibile utilizzare il metodo AddHandler per agganciare l'evento PointerWheelChanged e impostare e.Handled = false. Tutti i dettagli qui: http://briandunnington.github.com/gridview-in-a-scrollviewer.html – briandunnington