zoukankan      html  css  js  c++  java
  • 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是革新的技术啊!

  • 相关阅读:
    C++ UNREFERENCED_PARAMETER函数的作用
    Win32 Console Application、Win32 Application、MFC三者之间的联系和区别
    解决CSDN博客插入代码出现的问题
    C++ std::vector指定位置插入
    计算机如何与人沟通(1)
    C++ fstream文件操作
    using namespace std 和 include 的区别
    找不到windows.h源文件
    C++ 字符串转换
    WPF style 换肤
  • 原文地址:https://www.cnblogs.com/LeonWong/p/4867761.html
Copyright © 2011-2022 走看看