Jako, że ostatnio sporo czytam o technologii Silverlight. Dziś będzie trochę o VisualStateManager.

Gdy kompletnie zmieniamy wygląd kontrolki, wraz z możliwością zaprojektowania jej na nowo tracimy niestety wszelkie efekty związane ze stanami w jakich ona się znajduje. Tak więc przycisk nie podświetli się ładnie, gdy kursor znajdzie się nad nim ani gdy przycisk zostanie naciśnięty. Jednak jest na to rozwiązanie. Wspomniany na początku VisualStateManager. Możemy go zdefiniować jako część ControlTemplate i za jego pomocą dodać interakcję do naszej nowo udekorowanej kontrolki.

Stany i przejścia

Stany, które możemy definiować, w których może się znajdować nasza kontrolka to:

Stan Grupa
Disabled CommonStates
MouseOver CommonStates
Normal CommonStates
Pressed CommonStates
Focused FocusStates
Unfocused FocusStates

Dodatkowo prócz tego jak kontrolka ma wyglądać kontrolka w poszczególnych stanach, mamy możliwość zdefiniowana jak będzie się zachowywać pomiędzy przejściami. Przejścia są możliwe tylko pomiędzy stanami znajdującymi się w tej samej grupie.

Przykład

W ramach przykładu w następnym wpisie spróbujemy zdefiniować style i przejścia dla takiego przycisku.

XAML:

<UserControl x:Class=”VisualStateManagerDemo.CloseButton”

  xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation”

  xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml” >

    <Button x:Name=”closeBtn”>               

        <Button.Template>

            <ControlTemplate>               

                <Canvas>

                    <Ellipse Stroke=”Black” StrokeThickness=”4″

                            Fill=”Orange” Width=”30″ Height=”30″ />

                    <Line Stroke=”Black” StrokeThickness=”4″

                            X1=”9″ Y1=”9″ X2=”21″ Y2=”21″ />

                    <Line Stroke=”Black” StrokeThickness=”4″

                        X1=”9″ Y1=”21″ X2=”21″ Y2=”9″ />

                Canvas>

            ControlTemplate>

        Button.Template>

    Button>

UserControl>

I na koniec dwa ciekawe linki do użytecznych narzędzi:

  • Silverlight Spy – pozwala na podgląd co się dzieje w naszej Silverlight-owej aplikacji, zresztą tak samo jak każda inna aplikacja typu Spy
  • XapOptimizer – to dzieło ComponentOne umożliwiające wgranie naszego pliku .xap i poddanie go optymalizacji pod względem wielkości. Usuwa odwołania do niepotrzebnych bibliotek, usuwa znaki końca linii oraz nadmiarowe spacje. Dodatkowo można obfuskować nasz kod.

Narzędzia, które powinny znaleźć się w użyciu każdego developer SL. Miłej zabawy z narzędziami i do następnego odcinka.