Dziś mały tips, który wpadł mi w oczy przeglądając zasoby MSDN’u.

Aplikacje napisane w WPF (a zwłaszcza animacje) często są postrzegane jako powolne a fakt ten jest przypisany powolności samego silnika WPF. Oczywiście, w pewnym stopniu jest to prawda, ale czasem jest to spowodowane niezrozumieniem WPF’a.

W Windows Presentation Foundation, część obiektów dziedziczy po klasie Freezable. Można by się zastanawiać po cóż nam kolejny poziom dziedziczenia. Jeśli jednak zobaczymy jakie są to klasy, od razu na język przyjdzie nam jedno słowo – Animacje.

Obiekty dziedziczące po Freezable możemy zamrozić sprawiając, iż nie będą one podlegać animacjom, przyśpieszając te elementy, które do animacji są niezbędne.

W zasadzie do tej pory nie napisałem niczego nowego. Nowością (dla mnie) jest fakt, że można zamrozić obiekt z poziomu XAML’a. Jak to zrobić – poniżej.

<Window.Resources>

    <SolidColorBrush x:Key=”blueBrush” Color=”Blue” PresentationOptions:Freeze=”true” />

Window.Resources>

Aby to zadziałało, musimy dodać odpowiedni namespace:

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

Jeśli więc macie niewydajną animację napisaną w WPF, zobaczcie czy nie da się pewnych jej elementów zamrozić a tym samym poprawić wydajność całości.