Jako początkujący programista chciałem tworzyć aplikacje, które będą ładne. Z pomocą przyszła technologia WPF stworzona przez Microsoft. Z jej pomocą udało mi się napisać programy, które cieszyły oko użytkownika. Z czasem niestety zaczęło to być coraz trudniejsze w utrzymaniu, bo wygląd okna był zakodowany w ponad 1500 wierszy, z czego najprostszy opis przycisku to było kilka długich linijek.
Przy kolejnych aplikacjach stwierdziłem, że trzeba coś z tym zrobić. Po przekopaniu internetu udało mi się znaleźć sporo ciekawych informacji o szablonach. Po co mam każdy przycisk opisywać, jak mogę opisać raz i narzucić ten wygląd na całą aplikację?
Zaczynając od początku: musimy do naszego projektu dodać nowy element, a mianowicie Resource Dictionary.
Następnie do pliku App.xaml dodajemy informację o pliku z którego będzie czerpała cała nasza aplikacja:
<Application x:Class="DB.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:DB" StartupUri="MainWindow.xaml"> <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="ResourcesTemplate.xaml"/> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources> </Application>
No i teraz najfajniejsza zabawa, czyli doprowadzenie aplikacji do pożądanego wyglądu. Ja często kopiuję kolory z Visual Studio, bo są ładne (przynajmniej w mojej ocenie) i klientom się podobają ze względu na profesjonalny wygląd 🙂
Stworzenie stylu przycisku nie jest może super proste, ale podrzucam gotowy przykład (kopiujcie do woli 😉 ):
<Color x:Key="ColorText">#c5c5c5</Color> <Color x:Key="ColorBackground">#3e3e3e</Color> <!-- Button --> <Style TargetType="Button"> <Setter Property="Margin" Value="5"></Setter> <Setter Property="FontSize" Value="20"></Setter> <Setter Property="Foreground"> <Setter.Value> <SolidColorBrush Color="{StaticResource ColorText}"/> </Setter.Value> </Setter> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Button}"> <Grid> <Border BorderBrush="#2d2d2d" BorderThickness="4" CornerRadius="15" > <Border.Background> <SolidColorBrush Color="{StaticResource ColorBackground}"/> </Border.Background> </Border> <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style>
Teraz wszystkie buttony w naszej aplikacji będą wyglądały dokładnie tak samo.
Zamiast kopiować długich linijek opisujących wygląd przycisku wstawimy tylko jego wielkość, wyświetlany tekst i podepniemy eventy. Opis wyglądu staje się znacznie prostszy i bardziej czytelny, a zmiana koncepcji wyglądu to tak naprawdę poprawienie kilku elementów w jednym pliku i cała aplikacja od razu się zmienia. Ot, takie małe czary 🙂
Najnowsze komentarze