WPF之换肤设计原理WPF换肤的设计原理,利用资源字典为每种皮肤资源添加不同的样式,在后台切换皮肤资源文件。截图上图中,第一张图采用规则样式,第二张图采用不规则样式,截图的时候略有瑕疵。资源字典规则样式资源Skin.RegularStyle.xaml 1 <Resource ...
WPF之换肤
设计原理
WPF换肤的设计原理,利用资源字典为每种皮肤资源添加不同的样式,在后台切换皮肤资源文件。
截图
上图中,第一张图采用规则样式,第二张图采用不规则样式,截图的时候略有瑕疵。
资源字典
规则样式资源Skin.RegularStyle.xaml
1 <ResourceDictionary ="http://schemas.microsoft.com/get='_blank'>winfx/2006/xaml/presentation" 2 ="http://schemas.microsoft.com/winfx/2006/xaml"> 3 4 <!--Window样式--> 5 <Style x:Key="WindowStyle" TargetType="Window"> 6 <Setter Property="Template"> 7 <Setter.Value> 8 <ControlTemplate TargetType="Window"> 9 <Border BorderBrush="{TemplateBinding BorderBrush}" 10 BorderThickness="{TemplateBinding BorderThickness}"> 11 <Border.Background> 12 <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 13 <GradientStop Color="Green" Offset="0"></GradientStop> 14 <GradientStop Color="LightGreen" Offset="0.4"></GradientStop> 15 <GradientStop Color="White" Offset="1"></GradientStop> 16 </LinearGradientBrush> 17 </Border.Background> 18 <ContentPresenter></ContentPresenter> 19 </Border> 20 </ControlTemplate> 21 </Setter.Value> 22 </Setter> 23 </Style> 24 25 <!--Button样式--> 26 <Style TargetType="Button"> 27 <Setter Property="Width" Value="70"></Setter> 28 <Setter Property="Height" Value="23"></Setter> 29 <Setter Property="Template"> 30 <Setter.Value> 31 <ControlTemplate TargetType="Button"> 32 <Border Name="bdr" Cursor="Arrow" 33 BorderBrush="{TemplateBinding BorderBrush}" 34 BorderThickness="{TemplateBinding BorderThickness}"> 35 <Border.Background> 36 <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 37 <GradientStop Color="White" Offset="0"></GradientStop> 38 <GradientStop Color="LightGreen" Offset="0.3"></GradientStop> 39 <GradientStop Color="Green" Offset="1"></GradientStop> 40 </LinearGradientBrush> 41 </Border.Background> 42 <TextBlock Name="tbk" Background="Transparent" Foreground="DarkGreen" TextAlignment="Center" 43 Text="{TemplateBinding Content}"></TextBlock> 44 </Border> 45 <ControlTemplate.Triggers> 46 <Trigger Property="IsMouseOver" Value="True"> 47 <Setter TargetName="bdr" Property="Background"> 48 <Setter.Value> 49 <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 50 <GradientStop Color="LightGreen" Offset="0"></GradientStop> 51 <GradientStop Color="Green" Offset="1"></GradientStop> 52 </LinearGradientBrush> 53 </Setter.Value> 54 </Setter> 55 <Setter TargetName="tbk" Property="Foreground" Value="White"></Setter> 56 </Trigger> 57 </ControlTemplate.Triggers> 58 </ControlTemplate> 59 </Setter.Value> 60 </Setter> 61 </Style> 62 63 <!--TextBox样式--> 64 <Style TargetType="TextBox"> 65 <Setter Property="FontFamily" Value="SketchFlow Print"/> 66 <Setter Property="FontSize" Value="14"/> 67 <Setter Property="Template"> 68 <Setter.Value> 69 <ControlTemplate TargetType="TextBox"> 70 <Border BorderBrush="DarkGreen" BorderThickness="0.5"> 71 <ScrollViewer x:Name="PART_ContentHost" Focusable="false" 72 HorizontalScrollBarVisibility="Hidden" 73 VerticalScrollBarVisibility="Hidden"></ScrollViewer> 74 </Border> 75 </ControlTemplate> 76 </Setter.Value> 77 </Setter> 78 </Style> 79 80 <!--ContextMenu样式--> 81 <Style TargetType="ContextMenu"> 82 <Setter Property="Template"> 83 <Setter.Value> 84 <ControlTemplate TargetType="ContextMenu"> 85 <Border BorderBrush="Green" BorderThickness="1"> 86 <ItemsPresenter/> 87 </Border> 88 </ControlTemplate> 89 </Setter.Value> 90 </Setter> 91 </Style> 92 93 <!--MenuItem样式--> 94 <Style TargetType="MenuItem"> 95 <Setter Property="Template"> 96 <Setter.Value> 97 <ControlTemplate TargetType="MenuItem"> 98 <Border Name="border" Background="LightGreen" BorderThickness="0"> 99 <TextBlock Name="tbk" Background="Transparent" Padding="5,5"100 Text="{TemplateBinding Header}"></TextBlock>101 </Border>102 <ControlTemplate.Triggers>103 <Trigger Property="IsMouseOver" Value="True">104 <Setter TargetName="border" Property="Background" Value="Green"></Setter>105 <Setter TargetName="tbk" Property="Foreground" Value="White"></Setter>106 </Trigger>107 </ControlTemplate.Triggers>108 </ControlTemplate>109 </Setter.Value>110 </Setter>111 </Style>112 113 <!--TextBlock样式-->114 <Style TargetType="TextBlock">115 <Setter Property="FontFamily" Value="SketchFlow Print"/>116 <Setter Property="FontSize" Value="14"/>117 </Style>118 119 </ResourceDictionary>
原标题:WPF之换肤
关键词:wpf
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。