W viście są dosyć fajnie dopracowane kontrolki ? to już wiecie. Moją szczególną uwagę zwróciły wizardy w aero, taki jak na przykład przy dodawaniu nowej drukarki:
To co głównie wyróżnia tego wizarda to przycisk wstecz w lewym górnym rogu i olbrzymi pasek tytułowy ( jak na mój gust nawet za duży).
Szukałem sposobu w jaki by można zrobić takiego wizarda we własnej aplikacji, który byłby zgodny z systemowym. Okazuje się, że istnieje nawet przykład, który pokazuje jak to zrobić w .NET, oczywiście jak zwykle w msdnie sprawa nie jest banalna i wpierw należy pobrać Vista Bridge Controls. Po skompilowaniu wszystkiego możemy zacząć używać fajnych aero wizardów w WPF:
Zrobienie czegoś takiego wymaga dosyć prostego xamla:
<v:AeroWizard x:Class="Wizard.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:v="clr-namespace:Microsoft.SDK.Samples.VistaBridge.Controls;assembly=VistaBridgeControls" xmlns:l="clr-namespace:Wizard" MainInstruction="AERO Wizard Test" Title="Connect to a workplace" > <v:AeroWizard.Pages> <Page> <StackPanel> <v:CommandLinkWPF Link="Choice One" Note="(Recommended)" Click="OnClick" /> <v:CommandLinkWPF Link="Choice Two" Note="(Not Recommended)" Click="OnClick" /> <v:CommandLinkWPF Link="Choice Three" Note="(Never Use)" /> </StackPanel> </Page> <Page> <StackPanel> <v:CommandLinkWPF Link="Some Other Link text" Note="This is a lot of descriptive text, which will enable the user to make a better choice." Click="OnClick" /> </StackPanel> </Page> </v:AeroWizard.Pages> </v:AeroWizard>
Bardzo poważna wadą takiego rozwiązania to że będzie działać jedynie na Viście, na xp pojawi się komunikat o braku biblioteki dwmapi.dll. Żeby rozwiązać problem trzeba by napisać własną abstrakcję wizarda, która na viscie używałaby aero a na xp jakiegoś domyślnego wyglądu.
UPDATE okazuje się że wystarczy usunąć odwołania do DWM żeby działało też na xp, tylko wygląd już nie ten 🙁