WPF(1)换肤

1、先准备2套皮肤

2、A.xaml

1 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
2                     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
3     <Style x:Key="Grid_Container" TargetType="Grid">
4         <Setter Property="Background"  Value="red"/>
5     </Style>
6 </ResourceDictionary>

B.xaml

1 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
2                     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
3     <Style x:Key="Grid_Container" TargetType="Grid">
4         <Setter Property="Background"  Value="Green"/>
5     </Style>
6 </ResourceDictionary>

 

3、建立一个使用皮肤的窗体Window1.xaml

1 <Window x:Class="WpfApp.Window1"
2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4         Title="Window1" Height="300" Width="300">
5     <Grid Style="{DynamicResource Grid_Container}">
6         <Button Content="A" Height="23" HorizontalAlignment="Left" Margin="30,70,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
7         <Button Content="B" Height="23" HorizontalAlignment="Left" Margin="111,70,0,0" Name="button2" VerticalAlignment="Top" Width="75" Click="button2_Click" />
8     </Grid>
9 </Window>

 

4、为按钮添加换肤的代码

 1   private void button1_Click(object sender, RoutedEventArgs e)
 2         {
 3             Application.Current.Resources.MergedDictionaries.Clear();
 4             ResourceDictionary resource = (ResourceDictionary)Application.LoadComponent(new Uri("/WpfApp;component/Skin/A/A.xaml", UriKind.Relative));
 5           
 6             Application.Current.Resources.MergedDictionaries.Add(resource);
 7         }
 8 
 9         private void button2_Click(object sender, RoutedEventArgs e)
10         {
11             Application.Current.Resources.MergedDictionaries.Clear();
12             ResourceDictionary resource = (ResourceDictionary)Application.LoadComponent(new Uri("/WpfApp;component/Skin/B/B.xaml", UriKind.Relative));
13 
14             Application.Current.Resources.MergedDictionaries.Add(resource);
15         }

5、效果

点击A按钮:

点击B按钮

 

 

posted on 2013-11-29 10:57  hhp895  阅读(229)  评论(0编辑  收藏  举报

导航