WPF初学——自定义样式

在WPF开发界面的过程中,经常会遇到多个相同种类的控件样式也是统一的,但是要一个一个地去设置,即使是复制粘贴都嫌累,所以翻了些书,网上度娘了一些材料,发现WPF有很容易的方式解决我的纠结,那就是——自定义样式。

我使用的比较多的是在Grid里使用Grid.Resource标签将样式作为静态资源统一管理起来,然后在需要的地方使用。

 1 <Grid.Resources>
 2             <Style x:Key="Style_Label" TargetType="Label">
 3                 <Setter Property="HorizontalAlignment" Value="Left"/>
 4                 <Setter Property="VerticalContentAlignment" Value="Center"/>
 5             </Style>
 6 
 7             <Style x:Key="Style_Label_Bold" TargetType="Label">
 8                 <Setter Property="HorizontalAlignment" Value="Left"/>
 9                 <Setter Property="VerticalContentAlignment" Value="Center"/>
10                 <Setter Property="FontWeight" Value="Bold"/>
11             </Style>
12 
13             <Style x:Key="Style_Button" TargetType="Button">
14                 <Setter Property="Height" Value="40"/>
15                 <Setter Property="Width" Value="80"/>
16                 <Setter Property="HorizontalAlignment" Value="Left"/>
17                 <Setter Property="Background" Value="#FF00AAFF"/>
18                 <Setter Property="Foreground" Value="White"/>
19                 <Setter Property="BorderBrush" Value="{x:Null}"/>
20                 <Setter Property="Focusable" Value="False"/>
21             </Style>
22 
23             <Style x:Key="Style_TextBox" TargetType="TextBox">
24                 <Setter Property="Height" Value="30"/>
25                 <Setter Property="HorizontalAlignment" Value="Left"/>
26                 <Setter Property="VerticalContentAlignment" Value="Center"/>
27             </Style>
28 
29             <VisualBrush x:Key="HelpBrush" TileMode="None" Opacity="0.3" Stretch="None" AlignmentX="Left">
30                 <VisualBrush.Visual>
31                     <TextBlock FontStyle="Italic" Text="必填项,免单或修改价格原因"/>
32                 </VisualBrush.Visual>
33             </VisualBrush>
34             
35             <Style x:Key="Style_TextBox_Tooltip" TargetType="TextBox">
36                 <Setter Property="Height" Value="30"/>
37                 <Setter Property="HorizontalAlignment" Value="Left"/>
38                 <Setter Property="VerticalContentAlignment" Value="Center"/>
39                 <Style.Triggers>
40                     <Trigger Property="Text" Value="{x:Null}">
41                         <Setter Property="Background" Value="{StaticResource HelpBrush}"/>
42                     </Trigger>
43                     <Trigger Property="Text" Value="">
44                         <Setter Property="Background" Value="{StaticResource HelpBrush}"/>
45                     </Trigger>
46                 </Style.Triggers>
47             </Style>
48         </Grid.Resources>

现在遇到的问题是,我的Button的样式,并不能真的去掉外边框,需要更深一步才行。

当然还有TextBox的空内容提示,还在研究,不了解visualBrush的用法,算是移山填海地手法从巨人们的肩膀上得来的,多实践才会理解代码的含义。

说实话,Trigger(触发器)要比事件更方便一些,发现了比winform好用的地方了,果然WPF是革新的技术啊!

原文地址:https://www.cnblogs.com/LeonWong/p/4867761.html