你的位置:首页 > 软件开发 > ASP.net > WPF之换肤

WPF之换肤

发布时间:2015-05-26 12:00:32
WPF之换肤设计原理WPF换肤的设计原理,利用资源字典为每种皮肤资源添加不同的样式,在后台切换皮肤资源文件。截图上图中,第一张图采用规则样式,第二张图采用不规则样式,截图的时候略有瑕疵。资源字典规则样式资源Skin.RegularStyle.xaml 1 <Resource ...

WPF之换肤

设计原理

WPF换肤的设计原理,利用资源字典为每种皮肤资源添加不同的样式,在后台切换皮肤资源文件。

截图

WPF之换肤

上图中,第一张图采用规则样式,第二张图采用不规则样式,截图的时候略有瑕疵。

资源字典

规则样式资源Skin.RegularStyle.xaml

WPF之换肤WPF之换肤
 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

wpf
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。