WPF自定义控件与样式(15)-终结篇 & 系列文章索引 & 源码共享

系列文章目录   

WPF自定义控件与样式(1)-矢量字体图标(iconfont)

WPF自定义控件与样式(2)-自定义按钮FButton

WPF自定义控件与样式(3)-TextBox & RichTextBox & PasswordBox样式、水印、Label标签、功能扩展

WPF自定义控件与样式(4)-CheckBox/RadioButton自定义样式

WPF自定义控件与样式(5)-Calendar/DatePicker日期控件自定义样式及扩展

WPF自定义控件与样式(6)-ScrollViewer与ListBox自定义样式

WPF自定义控件与样式(7)-列表控件DataGrid与ListView自定义样式

WPF自定义控件与样式(8)-ComboBox与自定义多选控件MultComboBox

WPF自定义控件与样式(9)-树控件TreeView与菜单Menu-ContextMenu

WPF自定义控件与样式(10)-进度控件ProcessBar自定义样 

WPF自定义控件与样式(11)-等待/忙/正在加载状态-控件实现

WPF自定义控件与样式(12)-缩略图ThumbnailImage /gif动画图/图片列表

WPF自定义控件与样式(13)-自定义窗体Window & 自适应内容大小消息框MessageBox

WPF自定义控件与样式(14)-轻量MVVM模式实践 

WPF自定义控件与样式(15)-终结篇

源代码下载地址:http://files.cnblogs.com/files/anding/Util.Controls.zip

Github项目地址https://github.com/kwonganding/wpf.controls

一.总结.声明

  关于本WPF,本人也只能算是一个刚入门的,在学习中和工作中,学习、借鉴了很多网友的文章和开源的项目的知识。发现提供实际项目开发需要的基础控件、样式的文章大都比较散,不成系列。因此基于现在项目中使用的基础UI库,写了这个系列,希望对有需要的人有所帮助。

  本系列包括本文共15篇,就到此为止了。关于一些问题再次说明一下:

  • 每一篇文章中都给出了基本所有主要代码,目的仅供参考学习,由于目前还是公司在使用中的项目,因此不便提供完整项目源码,有需要的同学还是多动动手吧!
  • 对于确实需要源码参考学的,推荐开源项目MahApps.Metro(http://mahapps.com/),我在那里面学习借鉴了很多,本系列中不少样式中都有她(就是她)的影子。
  • 本文会把一些额外遗漏的资源或代码一并提供出来

二.附录.本系列补充资源

2.1附加属性

  很多样式中使用了附加属性来对基础控件扩展,ControlAttachProperty.cs所有代码:  

WPF自定义控件与样式(15)-终结篇 & 系列文章索引 & 源码共享View Code

  其中有一个比较好玩的附加属性就是AllowsAnimationProperty,实现旋转动画的支持,类型为bool,可以有很多种使用方式,如绑定到普通控件的IsMouseOver上,当鼠标悬浮就旋转180度,移开又转回去,效果(gif录制的问题,看上去没有那么流程):

 WPF自定义控件与样式(15)-终结篇 & 系列文章索引 & 源码共享

  也可以绑定到CheckBox、RadioButton、ToggleButton的IsChecked属性上。

            <TextBlock Text="&#xe602;" Style="{StaticResource FIcon}" Margin="3" FontSize="40" 
                       core:ControlAttachProperty.AllowsAnimation="{Binding IsMouseOver,RelativeSource={RelativeSource Self}}"></TextBlock>
            <core:FImage Margin="3" Width="30" Height="30" Source="Images/qq.png" 
core:ControlAttachProperty.AllowsAnimation="{Binding IsMouseOver,RelativeSource={RelativeSource Self}}"></core:FImage>

2.2扩展方法

  静态扩展类ControlExtession.cs代码:  

WPF自定义控件与样式(15)-终结篇 & 系列文章索引 & 源码共享View Code

2.3配色资源Colors.xaml

  本系列前面文章中,基本所有样式中都没有直接使用具体色彩,而是通过资源的方式配置的,这些配色资源都在Colors.xaml中。这样的设计理论上可以实现换肤,在不同客户端中也很容易定制自己需要的风格色彩搭配。 Colors.xaml代码: 

WPF自定义控件与样式(15)-终结篇 & 系列文章索引 & 源码共享
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:sys="clr-namespace:System;assembly=mscorlib"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 

    <!--Window窗体-->
    <SolidColorBrush x:Key="WindowBackground" Color="#093B5D"></SolidColorBrush>
    <SolidColorBrush x:Key="WindowInnerBackground" Color="Transparent"></SolidColorBrush>
    <!--<ImageBrush x:Key="WindowInnerBackground" Stretch="Fill"  
                ImageSource="pack://application:,,,/XLY.Framework.WPFTest;component/Images/back/b2.jpg"  Opacity="1"
                Viewport="0,0,1,1" ViewportUnits="Absolute" TileMode="Tile" AlignmentX="Left" AlignmentY="Top"/>-->
    
    <SolidColorBrush x:Key="WindowBorderBrush" Color="#920892"></SolidColorBrush>
    <DropShadowEffect x:Key="WindowDropShadow" Color="#F472F4" BlurRadius="8" ShadowDepth="0" Direction="0" Opacity="0.7" />
    <SolidColorBrush x:Key="CaptionForeground" Color="White"></SolidColorBrush>
    <!--<LinearGradientBrush x:Key="CaptionBackground" StartPoint="0.5,0" EndPoint="0.5,1">
        <GradientStop Color="#571457" Offset="0"/>
        <GradientStop Color="#6A196A" Offset="1"/>
    </LinearGradientBrush>-->
    <ImageBrush x:Key="CaptionBackground" 
                ImageSource="pack://application:,,,/XLY.Framework.WPFTest;component/Images/back/b2.jpg"  Opacity="1"
                Viewport="0,0,202,143" ViewportUnits="Absolute" TileMode="Tile" AlignmentX="Left" AlignmentY="Top"/>
    
    <!--MessageBoxX-->
    <SolidColorBrush x:Key="InfoForeground" Color="White"></SolidColorBrush>
    <SolidColorBrush x:Key="QuestionForeground" Color="#74B80C"></SolidColorBrush>
    <SolidColorBrush x:Key="WarningForeground" Color="DarkOrange"></SolidColorBrush>
    <SolidColorBrush x:Key="ErrorForeground" Color="#E74E4E"></SolidColorBrush>
    <!--WaitingBox-->
    <SolidColorBrush x:Key="WaitingBoxBackground" Color="#921692"></SolidColorBrush>
    <!--边框:Menu-->
    <DropShadowEffect x:Key="DefaultDropShadow" Color="Black" BlurRadius="5" ShadowDepth="2" Direction="315" Opacity="0.6" />
    <!--输入组件-->
    <SolidColorBrush x:Key="TextForeground" Color="White"></SolidColorBrush>
    <SolidColorBrush x:Key="TextBackground" Color="#0D234B"></SolidColorBrush>
    <SolidColorBrush x:Key="TextSelectionBrush" Color="#8F8787"></SolidColorBrush>
    <!--TextBox默认Label颜色-->
    <SolidColorBrush x:Key="TextLabelBackground" Color="#508AB6"></SolidColorBrush>
    <!--输入框-->
    <SolidColorBrush x:Key="ControlBorderBrush" Color="#999C9F"></SolidColorBrush>
    <SolidColorBrush x:Key="MouseOverBorderBrush" Color="#F6D1D1"></SolidColorBrush>
    <SolidColorBrush x:Key="FocusBackground" Color="#365080"></SolidColorBrush>
    <SolidColorBrush x:Key="FocusBorderBrush" Color="#EBCECE"></SolidColorBrush>
    <!--ScrollBar-->
    <SolidColorBrush x:Key="ScrollBarForeround" Color="#877F7F"></
上一篇:WPF自定义控件与样式(13)-自定义窗体Window & 自适应内容大小消息框MessageBox


下一篇:windows php5.5安装redis扩展,并用redis存储session