Silverlight 4 - Podpora kolečka myši

Implicitně je kolečko myši podporováno v komponentách ComboBox, DataPicker, Calendar, TextBox, ScrolViewer, DataGrid a ListBox.

Pohyb kolečka myši je zajištěn události MouseWheel. Ta nám poskytuje parametr typu MouseWheelEventArgs, který obsahuje vlastnost Delta. Tato vlastnost je důležitá k tomu, abychom vyhodnotili pohyb kolečka myši. Delta může nabývat hodnoty 120 pro pohyb kolečka vpřed a hodnotu –120 pro pohyb kolečka vzad.

Omezení

Událost MouseWheel není podporována na platformě Macintosh a zároveň není podporována v rámci módu “windowless” v prohlížečích Firefox, Chrome, Opera, Safari.

V rámci těchto omezení lze jako alternativu zvolit užití HTML DOM události. Musíme však počítat s nedostupností podpory kolečka v rámci režimu Full-Screen a také v režimu mimo prohlížeč (OOB).

Ukázka 

Tato aplikace obsahuje komponentu Calendar, ListBox a ScrollViewer. Tyto tři komponenty implicitně podporují pohyb kolečka myši. Další dvě komponenty typu Image a Slider již obsluhu události musí mít implementovanou. Slider bude pohybovat posuvník při pohybu kolečka myši a obrázek zase bude rotovat. Label s textem “Hodnota Delty:” nám v případě vyvoláni události MouseMove nad komponentou Slider nebo Image sděluje aktuální hodnotu vlastnosti Delta.

Implementaci události MouseWheel si ukážeme na komponentě Slider.

V XAMLu jsme si přidali komponentu Slider a k ní událost MouseWheel.

<slider x:name="slider" mousewheel="slider_MouseWheel"></slider>

 V implementaci metody reagující na událost máme tento kód:

private void slider_MouseWheel(object sender, MouseWheelEventArgs e)
{
    e.Handled = true;

    if (e.Delta > 0)
        slider.Value += 1;
    else
        slider.Value -= 1;
}

 

Vlastnost Handled z parametru MouseWheelEventArgs je nastavena na true, a to z toho důvodu, aby nám událost dále neprobublávala směrem nahoru a neodchytila ji jiná komponenta (např. ScrollViewer) implementující událost MouseWheel.

V rámci podmínky ověřujeme, zda-li vlastnost Delta je kladná či záporná. Podle toho nastavujeme posun v Slideru. Je-li Delta záporná, tedy pohyb kolečka je vzad, pak posun v Slideru je směrem zpět. V případě kladné Delty je pohyb opačný.

Výsledná aplikace

Get Microsoft Silverlight

Shrnutí

  • Událost MouseWheel
  • Implicitní MouseWheel u komponenty Calendar, ComboBox, ListBox, TextBox, DataPicker, ScrollViewer, DataGrid
  • Vlastnost Delta z MouseWheelEventArgs určuje pohyb kolečka
  • Nepodporováno na platformě Macintosh a v rámci windowless ve Firefoxu, Chrome, Safari a Opera.

 

 

 

Ohodnoťte článek: starstarstarstarstar

Komentáře

Přidat komentář

jméno

text komentáře

opište text z obrázku


O autorovi

David Beinhauer

David Beinhauer

Působí jako Microsoft Student Partner a pracuje jako vývojář v jedné nadnárodní firmě. Zajímá se o webové technologie a počítačovou grafiku. Pozornost také věnuje hernímu průmyslu

web: www.aglight.cz

©2010 | David Beinhauer | Lukáš Kubis