WPF 自定义窗口,自定义控件和样式

  首先,感谢 @/*梦里花落知多少*/  的无私分享,本文中的所有内容皆来自于 http://www.cnblogs.com/anding/p/5018363.html,加上我自己做的少许修改。

  有关控件样式,详情就看 /*梦里花落知多少*/ 的 WPF自定义控件与样式 系列文章

  我做的修改:

  1.修复WindowBase因为设置AllowsTransparency为True导致XP系统上窗体显示异常的问题;

  2.WindowBase默认样式添加自定义内容添加,添加位置为最小化按钮左边。

   

<core:WindowBase x:Class="MainShell.ShellView"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:core="clr-namespace:WPFStyle;assembly=WPFStyle"
        xmlns:cm="clr-namespace:MainShell.Framework"
        xmlns:str="clr-namespace:Multilanguage;assembly=Multilanguage"
        xmlns:system="clr-namespace:System;assembly=mscorlib"
        Height="600" Width="900" Title="{str:StringResource ShellView_Title,DefaultValue=WPF-CM框架}">
    <core:ControlAttachProperty.AttachContent>
        <ControlTemplate >
            <core:FButton Width="Auto" Style="{DynamicResource FButton_Transparency}" Content="{str:StringResource App_CurLang,DefaultValue=中文}" 
                           cm:Message.Attach="[Event Click]= [Action ChangeLang]"></core:FButton>
        </ControlTemplate>
    </core:ControlAttachProperty.AttachContent>
View Code

  3.样式LoopProcessBar(圆环进度条)添加了默认数值显示;

  4.自定义多选控件MultiComboBox的Text设置成只读

     新增的内容:

  1.解决datagrid退出编辑行才刷新的问题   用法:<DataGrid yy:DataGridHelper.RealTimeCommit="True">

  2.解决PasswordBox绑定问题  用法:mywpf:PasswordBoxHelper.Attach="True" mywpf:PasswordBoxHelper.Password="{Binding Path=PassWord,Mode=TwoWay}"

  3.添加了基于TextBlock实现的显示当前日期时间的控件DateTimeLabel   用法:

    <core:DateTimeLabel></core:DateTimeLabel>

           <core:DateTimeLabel Format="yyyy-MM-dd dddd">

           </core:DateTimeLabel><core:DateTimeLabel Format="HH:mm:ss"></core:DateTimeLabel>

  4.等待窗口WaitingBox的WaitShow新增完成回调函数参数

  5.MessageBoxX添加ShowSuccess和ShowFailure

  可能记得不全,实际效果看DEMO吧。为了方法使用,我将所有内容都打包到一个项目中了,要使用的话,将项目添加到解决方法,添加项目引用,在App.xaml中添加以下内容:

  

    <Application.Resources>
        <ResourceDictionary>
                <!--Begin MyWPFStyle-->
                <ResourceDictionary x:Name="Colors" Source="pack://application:,,,/WPFStyle;component/ControlStyle/Colors.xaml"></ResourceDictionary>
                <ResourceDictionary x:Name="Global" Source="pack://application:,,,/WPFStyle;component/ControlStyle/Global.xaml"></ResourceDictionary>
                <ResourceDictionary x:Name="Share" Source="pack://application:,,,/WPFStyle;component/ControlStyle/Share.xaml"></ResourceDictionary>
                <ResourceDictionary x:Name="FIconStyle" Source="pack://application:,,,/WPFStyle;component/ControlStyle/FIconStyle.xaml"></ResourceDictionary>
                <ResourceDictionary x:Name="FButtonStyle" Source="pack://application:,,,/WPFStyle;component/ControlStyle/FButtonStyle.xaml"></ResourceDictionary>
                <ResourceDictionary x:Name="TextBoxStyle" Source="pack://application:,,,/WPFStyle;component/ControlStyle/TextBoxStyle.xaml"></ResourceDictionary>
                <ResourceDictionary x:Name="CheckBoxStyle" Source="pack://application:,,,/WPFStyle;component/ControlStyle/CheckBoxStyle.xaml"></ResourceDictionary>
                <ResourceDictionary x:Name="RadioButonStyle" Source="pack://application:,,,/WPFStyle;component/ControlStyle/RadioButonStyle.xaml"></ResourceDictionary>
                <ResourceDictionary x:Name="CalendarStyle" Source="pack://application:,,,/WPFStyle;component/ControlStyle/CalendarStyle.xaml"></ResourceDictionary>
                <ResourceDictionary x:Name="DatePickerStyle" Source="pack://application:,,,/WPFStyle;component/ControlStyle/DatePickerStyle.xaml"></ResourceDictionary>
                <ResourceDictionary x:Name="ScrollViewerStyle" Source="pack://application:,,,/WPFStyle;component/ControlStyle/ScrollViewerStyle.xaml"></ResourceDictionary>
                <ResourceDictionary x:Name="ListBoxStyle" Source="pack://application:,,,/WPFStyle;component/ControlStyle/ListBoxStyle.xaml"></ResourceDictionary>
                <ResourceDictionary x:Name="DataGridStyle" Source="pack://application:,,,/WPFStyle;component/ControlStyle/DataGridStyle.xaml"></ResourceDictionary>
                <ResourceDictionary x:Name="ListViewStyle" Source="pack://application:,,,/WPFStyle;component/ControlStyle/ListViewStyle.xaml"></ResourceDictionary>
                <ResourceDictionary x:Name="ComboBoxStyle" Source="pack://application:,,,/WPFStyle;component/ControlStyle/ComboBoxStyle.xaml"></ResourceDictionary>
                <ResourceDictionary x:Name="MenuStyle" Source="pack://application:,,,/WPFStyle;component/ControlStyle/MenuStyle.xaml"></ResourceDictionary>
                <ResourceDictionary x:Name="ContextMenuStyle" Source="pack://application:,,,/WPFStyle;component/ControlStyle/ContextMenuStyle.xaml"></ResourceDictionary>
                <ResourceDictionary x:Name="TreeViewStyle" Source="pack://application:,,,/WPFStyle;component/ControlStyle/TreeViewStyle.xaml"></ResourceDictionary>
                <ResourceDictionary x:Name="ProcessBarStyle" Source="pack://application:,,,/WPFStyle;component/ControlStyle/ProcessBarStyle.xaml"></ResourceDictionary>
                <ResourceDictionary x:Name="BusyBoxStyle" Source="pack://application:,,,/WPFStyle;component/ControlStyle/BusyBoxStyle.xaml"></ResourceDictionary>
                <ResourceDictionary x:Name="ProgressRingStyle" Source="pack://application:,,,/WPFStyle;component/ControlStyle/ProgressRingStyle.xaml"></ResourceDictionary>
                <ResourceDictionary x:Name="WindowBaseStyle" Source="pack://application:,,,/WPFStyle;component/ControlStyle/WindowBaseStyle.xaml"></ResourceDictionary>
                <!--End MyWPFStyle-->
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>

DEMO下载:

http://pan.baidu.com/s/1nuretr7

原文地址:https://www.cnblogs.com/hualuo-code/p/5165628.html