2012-03-11 18 views
7

Şu anda Metro ve C# kullanarak Windows 8 için bir uygulama yazıyorum. Uygulamamda, verilerimi göstermek için bir scrollviewer ve gridview kombinasyonu kullanıyorum. Ancak benim sorunum, bir fare tekerleği ile nasıl kaydırılabilir hale getirebilirim?Windows 8 Metro scrollviewer'ın fare tekerleğine nasıl yanıt verebilirim?

Aramamda System.Windows.Input içinde bulunan MouseWheelParameters'i buldum, ancak get_pageTranslation'ı kullanmaya çalıştığımda, get yöntemini açıkça kullanamadığımı bildiren bir hata veriyor. Bu

wheelParameters.PageTranslation 

:

get_PageTranslation() 

uygulayan yöntemin adıdır

cevap

2

"get_pageTranslation" "PageTranslation" MouseWheelParameters mülkiyet, sen diyerek erişmek aslında PageTranslation özelliği, ancak C# veya C++ uygulamalarından erişilebilir değil.

+0

, inanıyorum şu şekildedir:

Bu sorunu çözmek için, GridView şablondan ScrollViewer kaldırıldı Tüketici önizlemesinde, scrollviewer otomatik olarak fare tekerleği ile kaydırılacak şekilde yapılandırılabilir. Ama nasıl yapacağımı% 100 emin değilim. –

+0

Bunu bulamadık ama –

14

fare tekerleği ile kaydırma Bu stilleri kullanın 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> 

yılında tek yönlü kaydırma için varsayılan stilleri vardır. ScrollViewer'a odaklanmak için tıklamanız gerekebilir, böylece hareket eder.

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

WinRT içinde ScrollViewer fare tekerleği ile kutunun dışında çalışır. Ancak, senaryonuzda, yarattığınız ve GridView şablonunun içinde bulunan iki ScrollViewer var. Bu iki çatışma.

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

Bu iş gibi görünüyor, ancak diğer istenmeyen yan etkileri olabilir ... Btw

+1

'un benim için işe yaradığı çok mantıklı geliyor ... teşekkürler! – Ripityom

+0

Sadece kılavuz görünümünde, öğelerinizi dokunarak "Görünümlü seç" öğelerini kullanamayacağınızı belirtmek istiyorum. Bu yüzden tokat seçimine ihtiyacınız varsa, başka bir şey denemeniz gerekecektir. – oXeNoN

+4

Hem fare tekerleğine hem de kaydırmaya seçeneğine ihtiyacınız varsa, PointerWheelChanged olayını kancalamak ve e.Handled = false değerini ayarlamak için AddHandler yöntemini kullanabilirsiniz. Burada tam detaylar: http://briandunnington.github.com/gridview-in-a-scrollviewer.html – briandunnington

İlgili konular