Korzystanie ze skinów w WPF jest niezwykle proste.
Przejdę bezpośrednio do przykładu. Stworzymy nową aplikację WPF wykorzystując Visual Studio 2010.
Na formatkę położymy dwa przyciski:
Następnie tworzymy dwa słowniki:
Te dwa słowniki to RedTemplate oraz BlueTemplate. Same definicje słowników są w tym pokazie bardzo proste:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="{x:Type Button}">
<Setter Property="Background" Value="Blue" />
</Style>
</ResourceDictionary>
Ustawiamy tylko jedną właściwość odpowiedzialną za kolor tła przycisku. Teraz należy jeszcze tylko dodać odpowiednie zdarzenia, które uaktywnią odpowiedni kolor po kliknięciu w przycisk:
private ResourceDictionary currentColors;
private Collection<ResourceDictionary> appResources;
public MainWindow()
{
InitializeComponent();
//zapisujemy aktualnie używane słowniki
appResources = App.Current.Resources.MergedDictionaries;
}
private void btnRed_Click(object sender, RoutedEventArgs e)
{
if (currentColors != null)
{
appResources.Remove(currentColors);
}
currentColors = (ResourceDictionary)App.LoadComponent(new Uri(@"RedTemplate.xaml", UriKind.Relative));
if ((ResourceDictionary)App.LoadComponent(new Uri(@"RedTemplate.xaml", UriKind.Relative)) != null)
{
appResources.Add((ResourceDictionary)App.LoadComponent(new Uri(@"RedTemplate.xaml", UriKind.Relative)));
}
}
private void btnBlue_Click(object sender, RoutedEventArgs e)
{
if (currentColors != null)
{
appResources.Remove(currentColors);
}
currentColors = (ResourceDictionary)App.LoadComponent(new Uri(@"BlueTemplate.xaml", UriKind.Relative));
if ((ResourceDictionary)App.LoadComponent(new Uri(@"BlueTemplate.xaml", UriKind.Relative)) != null)
{
appResources.Add((ResourceDictionary)App.LoadComponent(new Uri(@"BlueTemplate.xaml", UriKind.Relative)));
}
}
Jak widać nic trudnego, a można dokonać wiele więcej zmian (np. wyglądu przycisku itp.).
Bardzo ciekawy przykład można zobaczyć w filmiku Jared Bienz-a dostępnego pod adresem:
klik
Brak komentarzy:
Prześlij komentarz