zoukankan      html  css  js  c++  java
  • WPF日期时间控件

    效果图如下

    控件的背景 和按钮的背景样式 都是用图片做的,本次就不上传了 只传代码

    前台样式代码 

    <Style x:Key="MeetingTextBox" TargetType="{x:Type TextBox}">
            <Setter Property="Height" Value="28"></Setter>
            <Setter Property="FontSize" Value="14"></Setter>
            <Setter Property="BorderThickness" Value="0"></Setter>
            <Setter Property="common:PamirAttachProperty.CornerRadius" Value="3"></Setter>
            <Setter Property="CaretBrush" Value="#C0E9FC"></Setter>
            <Setter Property="Foreground" Value="#C0E9FC"></Setter>
            <Setter Property="VerticalAlignment" Value="Center"></Setter>
            <Setter Property="Background">
                <Setter.Value>
                    <SolidColorBrush Color="#3C5270" Opacity="0.6"></SolidColorBrush>
                </Setter.Value>
            </Setter>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type TextBox}">
                        <Grid x:Name="PART_Root">
                            <Border x:Name="Bg" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                                    CornerRadius="{TemplateBinding common:PamirAttachProperty.CornerRadius}"
                                    BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}">
                                <Grid x:Name="PART_InnerGrid">
    
                                    <!--内容区域-->
                                    <ScrollViewer x:Name="PART_ContentHost" BorderThickness="0"  IsTabStop="False" Margin="1,0,0,0"
                                              VerticalAlignment="{TemplateBinding VerticalAlignment}" Background="{x:Null}"/>
                                    <!--水印-->
                                    <TextBlock x:Name="Message"  Padding="{TemplateBinding Padding}" Visibility="Collapsed"
                                           Text="{TemplateBinding common:PamirAttachProperty.Watermark}" 
                                           Foreground="{TemplateBinding Foreground}" IsHitTestVisible="False" Opacity="0.5"
                                           HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                           VerticalAlignment="{TemplateBinding VerticalAlignment}"  Margin="5,2" />
    
                                </Grid>
                            </Border>
                        </Grid>
                        <ControlTemplate.Triggers>
                            <!--显示水印-->
                            <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Text}" Value="">
                                <Setter TargetName="Message" Property="Visibility" Value="Visible" />
                            </DataTrigger>
                            <!--<Trigger Property="IsMouseOver" Value="True">
                                <Setter Property="BorderBrush" Value="#C0E9FC"/>
                                <Setter Property="BorderThickness" Value="1"></Setter>
                            </Trigger>-->
                            <Trigger Property="IsFocused" Value="True">
                                <Setter  Property="BorderBrush" Value="#C0E9FC"/>
                                <Setter Property="BorderThickness" Value="0.5"></Setter>
                            </Trigger>
                            <!--不可用-->
                            <Trigger Property="IsEnabled" Value="False">
                                <Setter TargetName="PART_Root" Property="Opacity" Value="0.5" />
                            </Trigger>
    
                            <Trigger Property="Validation.HasError"  Value="true">
                                <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}" />
                                <Setter Property="BorderBrush" Value="Red" />
                            </Trigger>
                            <!--只读时,禁用PART_AttachContent-->
                            <!--<Trigger Property="IsReadOnly" Value="True">
                                <Setter TargetName="PART_AttachContent" Property="IsEnabled" Value="False" />
                                <Setter TargetName="Bg" Property="Opacity" Value="0.88" />
                                <Setter TargetName="PART_ContentHost" Property="Opacity" Value="0.88" />
                                <Setter TargetName="Label" Property="Opacity" Value="0.88" />
                            </Trigger>-->
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    
        <Style TargetType="ComboBoxItem" x:Key="MeetingComboBoxItemStyle">
            <Setter Property="HorizontalContentAlignment" Value="Stretch" />
            <Setter Property="VerticalContentAlignment" Value="Center" />
            <Setter Property="RenderOptions.ClearTypeHint" Value="Enabled" />
            <Setter Property="BorderThickness" Value="0" />
            <Setter Property="Height" Value="28" />
            <Setter Property="Foreground" Value="#C0E9FC"></Setter>
    
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ComboBoxItem">
                        <Grid Background="{TemplateBinding Background}" Margin="0,0.5">
                            <Border x:Name="ItemBackground" IsHitTestVisible="False" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                                    BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}"
                                    Background="{TemplateBinding Background}" />
                            <ContentPresenter x:Name="contentPresenter" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                              HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" />
                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsSelected" Value="True">
                                <Setter TargetName="ItemBackground" Property="Background" Value="#0A78D5" />
                                <Setter Property="Foreground" Value="White"></Setter>
                            </Trigger>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter TargetName="ItemBackground" Property="Background" Value="#0A78D5" />
                                <Setter Property="Foreground" Value="White"></Setter>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    
        <Style x:Key="ComboxButton" TargetType="{x:Type ToggleButton}">
    
            <Setter Property="BorderThickness" Value="0"></Setter>
            <Setter Property="BorderBrush" Value="Transparent"></Setter>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ToggleButton}">
                        <Border x:Name="PART_root">
                            <Grid Background="{TemplateBinding Background}">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*"></ColumnDefinition>
                                    <ColumnDefinition Width="Auto"></ColumnDefinition>
                                </Grid.ColumnDefinitions>
                                <Border x:Name="PART_btn" Grid.Column="1" 
                                        Width="20" Height="20"></Border>
                            </Grid>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsChecked" Value="True">
                                <Setter TargetName="PART_btn" Property="Background">
                                    <Setter.Value>
                                        <ImageBrush ImageSource="pack://application:,,,/PamirNms;component/Resources/imgs/sys/branch-closed.png"></ImageBrush>
                                    </Setter.Value>
                                </Setter>
                            </Trigger>
                            <Trigger Property="IsChecked" Value="False">
                                <Setter TargetName="PART_btn" Property="Background">
                                    <Setter.Value>
                                        <ImageBrush ImageSource="pack://application:,,,/PamirNms;component/Resources/imgs/sys/combobox_down_disabled.png"></ImageBrush>
                                    </Setter.Value>
                                </Setter>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
    
        </Style>
    
        <Style x:Key="DateTimePickerButton" TargetType="{x:Type ToggleButton}">
    
            <Setter Property="BorderThickness" Value="0"></Setter>
            <Setter Property="BorderBrush" Value="Transparent"></Setter>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ToggleButton}">
                        <Border x:Name="PART_root">
                            <Grid Background="{TemplateBinding Background}">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*"></ColumnDefinition>
                                    <ColumnDefinition Width="Auto"></ColumnDefinition>
                                </Grid.ColumnDefinitions>
                                <Border x:Name="PART_btn" Grid.Column="1" 
                                        Width="20" Height="20"></Border>
                            </Grid>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsChecked" Value="True">
                                <Setter TargetName="PART_btn" Property="Background">
                                    <Setter.Value>
                                        <ImageBrush ImageSource="pack://application:,,,/PamirNms;component/Resources/imgs/sys/calendar.png"></ImageBrush>
                                    </Setter.Value>
                                </Setter>
                            </Trigger>
                            <Trigger Property="IsChecked" Value="False">
                                <Setter TargetName="PART_btn" Property="Background">
                                    <Setter.Value>
                                        <ImageBrush ImageSource="pack://application:,,,/PamirNms;component/Resources/imgs/sys/calendar.png"></ImageBrush>
                                    </Setter.Value>
                                </Setter>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
    
        </Style>
    
        <Style x:Key="MeetingCombobox" TargetType="{x:Type ComboBox}">
            <Setter Property="Validation.ErrorTemplate" Value="{x:Null}"/>
            <Setter Property="Height" Value="30" />
            <Setter Property="Foreground" Value="#C0E9FC" />
            <Setter Property="Background">
                <Setter.Value>
                    <SolidColorBrush Color="#3C5270" Opacity="0.6"></SolidColorBrush>
                </Setter.Value>
            </Setter>
            <Setter Property="HorizontalContentAlignment" Value="Stretch" />
            <Setter Property="VerticalContentAlignment" Value="Center" />
            <Setter Property="BorderThickness" Value="0" />
            <Setter Property="BorderBrush" Value="#C0E9FC" />
            <Setter Property="common:PamirAttachProperty.CornerRadius" Value="3"></Setter>
            <Setter Property="FontSize" Value="14" />
            <Setter Property="ItemContainerStyle" Value="{StaticResource MeetingComboBoxItemStyle}" />
            <Setter Property="SnapsToDevicePixels" Value="True" />
            <Setter Property="MaxDropDownHeight" Value="400" />
            <Setter Property="ScrollViewer.CanContentScroll" Value="False" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ComboBox}">
                        <Grid x:Name="PART_Root">
                            <Border x:Name="Bg" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                                    CornerRadius="{TemplateBinding common:PamirAttachProperty.CornerRadius}"
                                    BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" />
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*" />
                                    <ColumnDefinition Width="Auto" />
    
                                </Grid.ColumnDefinitions>
    
    
                                <!--下拉按钮-->
                                <ToggleButton x:Name="PART_DropDownToggle" IsTabStop="False" Style="{StaticResource ComboxButton}" 
                                             IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Margin="2 1 2 1"
                                             Grid.Column="0" Grid.ColumnSpan="2" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}"
                                             Background="{TemplateBinding Background}"/>
                                <!--水印-->
                                <Border Grid.Column="0">
                                    <TextBlock x:Name="Message"  Padding="0" Visibility="Collapsed" Text="{TemplateBinding common:PamirAttachProperty.Watermark}" 
                                           Foreground="{TemplateBinding Foreground}" IsHitTestVisible="False" Opacity="0.5" HorizontalAlignment="Left" TextAlignment="Center" 
                                           VerticalAlignment="Center" Margin="5,2,5,2" />
                                </Border>
                                <!--主内容区域-->
                                <Grid Grid.Column="0" x:Name="ContentSite" Margin="2 0 0 0" >
                                    <ContentPresenter x:Name="PART_SelectedItem" ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
                                                      ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}"
                                                      Content="{TemplateBinding SelectionBoxItem}" ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}"
                                                      HorizontalAlignment="Stretch" Margin="2,0,2,0" 
                                                      IsHitTestVisible="False" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                                                      VerticalAlignment="{TemplateBinding VerticalContentAlignment}"  />
                                    <!--文本编辑-->
                                    <TextBox  x:Name="PART_EditableTextBox" Style="{StaticResource MeetingTextBox}" Visibility="Collapsed" 
                                             HorizontalAlignment="Stretch" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" IsHitTestVisible="True"
                                             HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                             IsReadOnly="{TemplateBinding IsReadOnly}" FontFamily="{TemplateBinding FontFamily}" Foreground="{TemplateBinding Foreground}"
                                             Text="{TemplateBinding Text}" FontSize="{TemplateBinding FontSize}" />
                                </Grid>
                            </Grid>
                            <!--弹出下拉控件-->
                            <Popup x:Name="PART_Popup" AllowsTransparency="True" Focusable="False"
                                   IsOpen="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}"
                                   PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom">
                                <Grid Width="{Binding ActualWidth, RelativeSource={RelativeSource TemplatedParent}}"
                                      MaxHeight="{Binding MaxDropDownHeight, RelativeSource={RelativeSource TemplatedParent}}">
                                    <Border x:Name="PopupBorder" BorderThickness="{TemplateBinding BorderThickness}" HorizontalAlignment="Stretch"
                                            Height="Auto" BorderBrush="{TemplateBinding BorderBrush}"
                                            Background="#233757">
    
                                    </Border>
                                    <ScrollViewer x:Name="DropDownScrollViewer" BorderThickness="0" Margin="1">
                                        <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" />
                                    </ScrollViewer>
                                </Grid>
                            </Popup>
                        </Grid>
                        <!--触发器-->
                        <ControlTemplate.Triggers>
                            <!--1.显示水印-->
                            <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Text}" Value="">
                                <Setter TargetName="Message" Property="Visibility" Value="Visible" />
                            </DataTrigger>
                            <!--编辑模式-->
                            <Trigger Property="IsEditable" Value="True">
                                <Setter TargetName="PART_EditableTextBox" Property="Visibility" Value="Visible" />
                                <Setter TargetName="PART_SelectedItem" Property="Visibility" Value="Collapsed" />
                                <Setter TargetName="PART_DropDownToggle" Property="Grid.Column" Value="3" />
                                <Setter TargetName="PART_DropDownToggle" Property="Grid.ColumnSpan" Value="1" />
                                <Setter TargetName="PART_DropDownToggle" Property="Background" Value="Transparent" />
                                <Setter Property="IsTabStop" Value="false" />
                                <Setter TargetName="PART_DropDownToggle" Property="Focusable" Value="False" />
                            </Trigger>
    
                            <Trigger Property="IsFocused" Value="True">
                                <Setter  Property="BorderThickness" Value="1"/>
    
                            </Trigger>
                            <Trigger Property="IsKeyboardFocusWithin" Value="True">
                                <Setter  Property="BorderThickness" Value="1"/>
                            </Trigger>
                            <Trigger Property="IsEnabled" Value="False">
                                <Setter TargetName="PART_Root" Property="Opacity" Value="0.88"></Setter>
                            </Trigger>
                            <Trigger Property="Validation.HasError" Value="true">
                                <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}" />
                                <Setter Property="BorderBrush" Value="Red"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    
    
    
        <Style TargetType="{x:Type ToolTip}">
            <Setter Property="MinHeight" Value="45"></Setter>
            <Setter Property="Foreground" Value="#C0E9FC"></Setter>
            <Setter Property="Background">
                <Setter.Value>
                    <ImageBrush Stretch="Fill" ImageSource="pack://application:,,,/PamirNms;component/Resources/imgs/sys/skin_win_bk.png"></ImageBrush>
                </Setter.Value>
            </Setter>
        </Style>
    
    
    
        <sys:Double x:Key="ScrollBarSize">12</sys:Double>
    
    <!--滚动条滑块两边按钮样式-->
        <Style x:Key="ScrollBarTrackButton" TargetType="{x:Type RepeatButton}">
            <Setter Property="Background" Value="Transparent"></Setter>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type RepeatButton}">
                        <Border Background="Transparent"></Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    
        <!--滚动条滑块样式-->
        <ControlTemplate x:Key="ThumbTemplate" TargetType="Thumb">
            <Grid>
                <Border  x:Name="Bg" CornerRadius="2" MinHeight="{TemplateBinding MinHeight}" Margin="2" SnapsToDevicePixels="True" Background="#877F7F">
                    <!--<Border.Background>
                        <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
                            <GradientStop Color="#C7C0C0" Offset="0.15"/>
                            <GradientStop Color="#AFA9A9" Offset=".5"/>
                            <GradientStop Color="#989494" Offset=".5"/>
                            <GradientStop Color="#858585" Offset="1"/>
                        </LinearGradientBrush>
                    </Border.Background>-->
                </Border>
            </Grid>
            <ControlTemplate.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Background" Value="Black" TargetName="Bg"></Setter>
                </Trigger>
                <Trigger Property="IsEnabled" Value="False">
                    <Setter Property="Opacity" Value="0.5" TargetName="Bg"></Setter>
                </Trigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>
    
        <!--水平滚滚动条模板-->
        <ControlTemplate x:Key="HorizontalScrollBar" TargetType="{x:Type ScrollBar}">
            <Grid x:Name="HorizontalRoot" Height="{TemplateBinding Height}">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="Auto" />
                </Grid.ColumnDefinitions>
                <!--外部背景,好像不用更好看-->
                <!--<Border x:Name="Bg" Grid.Column="0" Grid.ColumnSpan="3" CornerRadius="0"  Opacity="0" Background="#858585"/>-->
                <!--内部背景-->
                <Border x:Name="BgInner" Grid.Column="1" Margin="0" SnapsToDevicePixels="True" Opacity="0.3"  CornerRadius="6" Background="#877F7F"/>
                <!--左按钮-->
    
                <!--<Border Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Center">
                    <RepeatButton  local:ControlAttachProperty.FIcon="&#xe65e;"  Style="{StaticResource ScrollBarButton}" x:Name="HorizontalSmallDecrease"
                                     IsTabStop="False" Interval="50" Margin="0,1,0,0" Command="ScrollBar.LineLeftCommand"/>
                </Border>-->
                <!--中间滑动区域-->
                <Track x:Name="PART_Track" IsDirectionReversed="False" Grid.Column="1">
                    <!--左滑块-->
                    <Track.DecreaseRepeatButton>
                        <RepeatButton x:Name="HorizontalLargeDecrease" Command="ScrollBar.PageLeftCommand"
                                          IsTabStop="False" Interval="50" Style="{DynamicResource ScrollBarTrackButton}" />
                    </Track.DecreaseRepeatButton>
                    <!--中间滑块 Margin="1" VerticalAlignment="Center" VerticalContentAlignment="Center" -->
                    <Track.Thumb>
                        <Thumb Template="{StaticResource ThumbTemplate}" />
                    </Track.Thumb>
                    <!--右滑块-->
                    <Track.IncreaseRepeatButton>
                        <RepeatButton x:Name="HorizontalLargeIncrease" Command="ScrollBar.PageRightCommand"
                                          IsTabStop="False"  Interval="50" Style="{DynamicResource ScrollBarTrackButton}" />
                    </Track.IncreaseRepeatButton>
                </Track>
                <!--右按钮-->
                <!--<Border Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center">
                    <RepeatButton local:ControlAttachProperty.FIcon="&#xe605;"  Style="{StaticResource ScrollBarButton}"
                                     IsTabStop="False" Interval="50" Margin="0,1,0,0" Command="ScrollBar.LineRightCommand"/>
                </Border>-->
            </Grid>
            <ControlTemplate.Triggers>
                <Trigger Property="IsMouseOver" Value="true">
                    <Setter TargetName="BgInner" Property="Opacity" Value="0.5"/>
                </Trigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>
    
        <!--垂直滚滚动条模板-->
        <ControlTemplate x:Key="VerticalScrollBar" TargetType="{x:Type ScrollBar}">
            <Grid x:Name="VerticalRoot" Height="{TemplateBinding Height}">
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="*" />
                    <RowDefinition Height="Auto" />
                </Grid.RowDefinitions>
                <!--外部背景,好像不用更好看-->
                <!--<Border x:Name="Bg" Grid.Row="0" Grid.RowSpan="3" CornerRadius="0" Opacity="0" Background="#858585"/>-->
                <!--内部背景-->
                <Border x:Name="BgInner" Grid.Row="1" Margin="0" CornerRadius="6" SnapsToDevicePixels ="True" Opacity="0.3"  Background="#877F7F"/>
                <!--上按钮-->
                <!--<Border Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Center" x:Name="VerticalSmallDecrease">
                    <RepeatButton local:ControlAttachProperty.FIcon="&#xe65d;"  Style="{StaticResource ScrollBarButton}"
                                     IsTabStop="False" Interval="50" Margin="0" Command="ScrollBar.LineUpCommand"/>
                </Border>-->
                <!--中间滑动区域-->
                <Track x:Name="PART_Track" IsDirectionReversed="true" Grid.Row="1">
                    <!--上滑块-->
                    <Track.DecreaseRepeatButton>
                        <RepeatButton x:Name="HorizontalLargeDecrease" Command="ScrollBar.PageUpCommand" 
                                          IsTabStop="False" Interval="50" Style="{DynamicResource ScrollBarTrackButton}" />
                    </Track.DecreaseRepeatButton>
                    <!--中间滑块-->
                    <Track.Thumb>
                        <Thumb Template="{StaticResource ThumbTemplate}" MinHeight="15"/>
                    </Track.Thumb>
                    <!--下滑块-->
                    <Track.IncreaseRepeatButton>
                        <RepeatButton x:Name="HorizontalLargeIncrease" Command="ScrollBar.PageDownCommand"
                                          IsTabStop="False" Interval="50" Style="{DynamicResource ScrollBarTrackButton}" />
                    </Track.IncreaseRepeatButton>
                </Track>
                <!--下按钮-->
                <!--<Border Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Center" x:Name="VerticalSmallIncrease">
                    <RepeatButton local:ControlAttachProperty.FIcon="&#xe64b;"  Style="{StaticResource ScrollBarButton}"
                                     IsTabStop="False" Interval="50" Margin="0" Command="ScrollBar.LineDownCommand"/>
                </Border>-->
            </Grid>
            <ControlTemplate.Triggers>
                <Trigger Property="IsMouseOver" Value="true">
                    <Setter TargetName="BgInner" Property="Opacity" Value="0.5"/>
                </Trigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>
    
        <!--ScrollBar样式-->
        <Style x:Key="DefaultScrollBar" TargetType="{x:Type ScrollBar}">
            <Setter Property="SnapsToDevicePixels" Value="True" />
            <Setter Property="OverridesDefaultStyle" Value="true" />
            <Style.Triggers>
                <Trigger Property="Orientation" Value="Horizontal">
                    <Setter Property="Template" Value="{StaticResource HorizontalScrollBar}" />
                    <Setter Property="Height" Value="{StaticResource ScrollBarSize}" />
                </Trigger>
                <Trigger Property="Orientation" Value="Vertical">
                    <Setter Property="Template" Value="{StaticResource VerticalScrollBar}" />
                    <Setter Property="Width" Value="{StaticResource ScrollBarSize}" />
                </Trigger>
            </Style.Triggers>
        </Style>
    
        <Style TargetType="{x:Type ScrollBar}" BasedOn="{StaticResource DefaultScrollBar}"></Style>
    
        <!--周六日日期颜色转换-->
        <control:DateConvertToColor x:Key="DateConvertToColor"></control:DateConvertToColor>
        <!--Day按钮样式-->
        <Style x:Key="CalendarDayButtonStyle" TargetType="{x:Type CalendarDayButton}">
            <Setter Property="MinWidth" Value="40" />
            <Setter Property="MinHeight" Value="30" />
            <Setter Property="FontFamily" Value="微软雅黑" />
            <Setter Property="FontSize" Value="16" />
            <Setter Property="HorizontalContentAlignment" Value="Center" />
            <Setter Property="VerticalContentAlignment" Value="Center" />
            <Setter Property="Background" Value="Transparent" />
            <Setter Property="Foreground" Value="#C0E9FC" />
            <Setter Property="Margin" Value="0" />
            <Setter Property="IsTabStop" Value="False" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type CalendarDayButton}">
                        <Grid x:Name="Grid" Margin="{TemplateBinding Margin}">
                            <Border x:Name="Bg" Background="{TemplateBinding Background}" />
                            <ContentPresenter x:Name="NormalText" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                              Margin="5,2,5,2" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                               >
                                <TextElement.Foreground>
                                    <Binding RelativeSource="{RelativeSource TemplatedParent}" Converter="{StaticResource DateConvertToColor}">
                                    </Binding>
                                </TextElement.Foreground>
                            </ContentPresenter>
                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsSelected" Value="True">
                                <Setter Property="Background" Value="#0A78D5"></Setter>
                                <Setter Property="Foreground" Value="White"></Setter>
                            </Trigger>
                            <Trigger Property="IsToday" Value="True">
                                <Setter Property="Background" Value="White"></Setter>
                                <Setter Property="Foreground" Value="Black"></Setter>
                            </Trigger>
                           
                            <!--<Trigger Property="IsMouseOver" Value="True">
                                <Setter Property="Background" Value="{StaticResource ItemMouseOverBackground}"></Setter>
                                <Setter Property="Foreground" Value="{StaticResource ItemMouseOverForeground}"></Setter>
                            </Trigger>-->
                            <!--不可用日期-->
                            <Trigger Property="IsBlackedOut" Value="True">
                                <Setter Property="Opacity" Value="0.6" TargetName="Grid"></Setter>
                                <Setter Property="Foreground" Value="#3C5270"></Setter>
                            </Trigger>
                            <!--不在当月的日期-->
                            <Trigger Property="IsInactive" Value="True">
                                <Setter Property="Opacity" Value="0.6" TargetName="Grid"></Setter>
                                <Setter Property="Foreground" Value="#3C5270"></Setter>
                            </Trigger>
                            <Trigger Property="IsEnabled" Value="False">
                                <Setter Property="Opacity" Value="0.5" TargetName="Grid"></Setter>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    
        <Style x:Key="CalanderBtn" TargetType="{x:Type Button}">
            <Setter  Property="FontSize" Value="24"></Setter>
            <Setter Property="FontFamily" Value="正楷"></Setter>
            <Setter Property="Background" Value="Transparent"></Setter>
            <Setter Property="Foreground" Value="White"></Setter>
            <Setter Property="FontWeight" Value="Bold"></Setter>
            <Setter Property="VerticalAlignment" Value="Center"></Setter>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Button}">
                        <Border x:Name="PART_root" Background="{TemplateBinding Background}" Width="{TemplateBinding Width}"
                                Height="{TemplateBinding Height}">
                            <Grid VerticalAlignment="{TemplateBinding VerticalAlignment}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}">
                                <TextBlock FontSize="{TemplateBinding FontSize}" FontFamily="{TemplateBinding FontFamily}"
                                           FontWeight="{TemplateBinding FontWeight}"
                                           Foreground="{TemplateBinding Foreground}" Text="{TemplateBinding Content}"  VerticalAlignment="{TemplateBinding VerticalAlignment}" 
                                           HorizontalAlignment="{TemplateBinding HorizontalAlignment}"
                                           ></TextBlock>
                            </Grid>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    
    
        <Style x:Key="CalanderYearBtn" TargetType="{x:Type Button}">
            <Setter  Property="FontSize" Value="18"></Setter>
            <Setter Property="FontFamily" Value="微软雅黑"></Setter>
            <Setter Property="Background" Value="Transparent"></Setter>
            <Setter Property="Foreground" Value="#C0E9FC"></Setter>
            <Setter Property="FontWeight" Value="Bold"></Setter>
            <Setter Property="HorizontalAlignment" Value="Center"></Setter>
            <Setter Property="VerticalAlignment" Value="Center"></Setter>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Button}">
                        <Border x:Name="PART_root" Background="{TemplateBinding Background}" Width="{TemplateBinding Width}"
                                Height="{TemplateBinding Height}">
                            <Grid VerticalAlignment="{TemplateBinding VerticalAlignment}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}">
                                <TextBlock FontSize="{TemplateBinding FontSize}" FontFamily="{TemplateBinding FontFamily}"
                                           FontWeight="{TemplateBinding FontWeight}"
                                           Foreground="{TemplateBinding Foreground}" Text="{TemplateBinding Content}"  VerticalAlignment="{TemplateBinding VerticalAlignment}" 
                                           HorizontalAlignment="{TemplateBinding HorizontalAlignment}"
                                ></TextBlock>
                            </Grid>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Cursor" Value="Hand"></Setter>
                </Trigger>
            </Style.Triggers>
        </Style>
        
        <!--日期标题颜色转换-->
        <control:DateTitleConvertToColor x:Key="DateTitleConvertToColor"></control:DateTitleConvertToColor>
    
        <!--日历日期面板样式-->
        <Style x:Key="CalendarItemStyle" TargetType="{x:Type CalendarItem}">
            <Setter Property="Margin" Value="0,1,0,1" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type CalendarItem}">
                        <ControlTemplate.Resources>
                            <!-- 头部星期样式-->
                            <DataTemplate x:Key="{x:Static CalendarItem.DayTitleTemplateResourceKey}">
                                <StackPanel>
                                    <StackPanel.Background>
                                        <SolidColorBrush Color="#3C5270" Opacity="0.6"></SolidColorBrush>
                                    </StackPanel.Background>
                                    <!--<TextBlock Text="{Binding}"  FontFamily="微软雅黑" Foreground="#C0E9FC" 
                                           FontSize="14" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,6,0,6" Opacity="0.8" />-->
                                    <TextBlock Text="{Binding}"  FontFamily="微软雅黑" 
                                               FontSize="14" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,6,0,6" Opacity="0.8" 
                                               Foreground="{Binding Converter={StaticResource DateTitleConvertToColor}}">
                                        
                                    </TextBlock>
    
                                </StackPanel>
    
                            </DataTemplate>
                        </ControlTemplate.Resources>
                        <Grid x:Name="PART_Root">
                            <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1" Background="{TemplateBinding Background}" Margin="{TemplateBinding Margin}">
                                <Grid Margin="2">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="Auto" />
                                    </Grid.ColumnDefinitions>
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="Auto" />
                                        <RowDefinition Height="*" />
                                    </Grid.RowDefinitions>
                                    <!--Header-->
                                    <Grid Grid.Row="0" HorizontalAlignment="Stretch" Background="{TemplateBinding Background}">
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="*"/>
                                            <ColumnDefinition Width="2*"/>
                                            <ColumnDefinition Width="*"/>
                                        </Grid.ColumnDefinitions>
                                        <Button  x:Name="PART_HeaderButton" FontWeight="Bold" 
                                                        Focusable="False" Grid.Column="1"
                                                        Style="{StaticResource CalanderYearBtn}"/>
                                        <Button  x:Name="PART_PreviousButton"  
                                                        Focusable="False" Grid.Column="0" Style="{StaticResource CalanderBtn}" Margin="5,0,0,0" Content="&lt;" />
                                        <Button  x:Name="PART_NextButton"  
                                                        Focusable="False" Grid.Column="2" Style="{StaticResource CalanderBtn}" HorizontalAlignment="Right" Margin="0,0,5,0"  Content="&gt;" />
                                    </Grid>
                                    <!--PART_MonthView-->
                                    <Grid x:Name="PART_MonthView" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="6,1,6,6" Grid.Row="1" Visibility="Visible">
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="*" />
                                            <ColumnDefinition Width="*" />
                                            <ColumnDefinition Width="*" />
                                            <ColumnDefinition Width="*" />
                                            <ColumnDefinition Width="*" />
                                            <ColumnDefinition Width="*" />
                                            <ColumnDefinition Width="*" />
                                        </Grid.ColumnDefinitions>
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="*" />
                                            <RowDefinition Height="*" />
                                            <RowDefinition Height="*" />
                                            <RowDefinition Height="*" />
                                            <RowDefinition Height="*" />
                                            <RowDefinition Height="*" />
                                            <RowDefinition Height="*" />
                                        </Grid.RowDefinitions>
                                    </Grid>
                                    <!--PART_YearView-->
                                    <Grid x:Name="PART_YearView" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="6,10,6,10" Grid.Row="1" Visibility="Hidden">
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="*" />
                                            <ColumnDefinition Width="*" />
                                            <ColumnDefinition Width="*" />
                                            <ColumnDefinition Width="*" />
                                        </Grid.ColumnDefinitions>
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="*" />
                                            <RowDefinition Height="*" />
                                            <RowDefinition Height="*" />
                                        </Grid.RowDefinitions>
                                    </Grid>
                                </Grid>
                            </Border>
                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsEnabled" Value="False">
                                <Setter Property="Opacity" TargetName="PART_Root" Value="0.5" />
                            </Trigger>
                            <DataTrigger Binding="{Binding DisplayMode, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Calendar}}}" Value="Year">
                                <Setter Property="Visibility" TargetName="PART_MonthView" Value="Hidden" />
                                <Setter Property="Visibility" TargetName="PART_YearView" Value="Visible" />
                            </DataTrigger>
                            <!--Decade 美 ['dɛked] n. 十年,十年期;十-->
                            <DataTrigger Binding="{Binding DisplayMode, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Calendar}}}" Value="Decade">
                                <Setter Property="Visibility" TargetName="PART_MonthView" Value="Hidden" />
                                <Setter Property="Visibility" TargetName="PART_YearView" Value="Visible" />
                            </DataTrigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    
        <!--年、月按钮样式-->
        <Style x:Key="CalendarButtonStyle" TargetType="{x:Type CalendarButton}">
            <Setter Property="Background" Value="Transparent" />
            <Setter Property="MinWidth" Value="40" />
            <Setter Property="MinHeight" Value="42" />
            <Setter Property="FontSize" Value="14" />
            <Setter Property="FontFamily" Value="微软雅黑" />
            <Setter Property="HorizontalContentAlignment" Value="Center" />
            <Setter Property="VerticalContentAlignment" Value="Center" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type CalendarButton}">
                        <Grid x:Name="Grid" Margin="{TemplateBinding Margin}">
                            <Border x:Name="Bg" Background="{TemplateBinding Background}" />
                            <ContentPresenter x:Name="NormalText" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                              Margin="5,2,5,2" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                              TextElement.Foreground="{TemplateBinding Foreground}" />
                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsFocused" Value="True">
                                <Setter Property="Background" Value="#071A34"></Setter>
                                <Setter Property="Foreground" Value="#C0E9FC"></Setter>
                            </Trigger>
                            <!--<Trigger Property="IsMouseOver" Value="True">
                                <Setter Property="Background" Value="{StaticResource ItemMouseOverBackground}"></Setter>
                                <Setter Property="Foreground" Value="{StaticResource ItemMouseOverForeground}"></Setter>
                            </Trigger>-->
                            <!--不在当月的日期-->
                            <Trigger Property="IsInactive" Value="True">
                                <Setter Property="Opacity" Value="0.6" TargetName="Grid"></Setter>
                                <Setter Property="Foreground" Value="#3C5270"></Setter>
                            </Trigger>
                            <Trigger Property="IsEnabled" Value="False">
                                <Setter Property="Opacity" Value="0.6" TargetName="Grid"></Setter>
                                <Setter Property="Foreground" Value="#3C5270"></Setter>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    
        <!--默认日历样式-->
        <Style x:Key="DefaultCalendar" TargetType="{x:Type Calendar}">
            <Setter Property="SnapsToDevicePixels" Value="True" />
            <Setter Property="Foreground" Value="#C0E9FC" />
            <Setter Property="CalendarDayButtonStyle" Value="{StaticResource CalendarDayButtonStyle}" />
            <Setter Property="CalendarItemStyle" Value="{StaticResource CalendarItemStyle}" />
            <Setter Property="CalendarButtonStyle" Value="{StaticResource CalendarButtonStyle}" />
            <Setter Property="Background" Value="#071A34" />
            <Setter Property="BorderBrush" Value="#071A34" />
            <Setter Property="BorderThickness" Value="0" />
            <Setter Property="FontSize" Value="17" />
            <Setter Property="FontFamily" Value="微软雅黑" />
            <Setter Property="IsTodayHighlighted" Value="True" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Calendar}">
                        <CalendarItem x:Name="PART_CalendarItem" BorderBrush="{TemplateBinding BorderBrush}" FontSize="{TemplateBinding FontSize}"
                                      FontFamily="{TemplateBinding FontFamily}" Foreground="{TemplateBinding Foreground}"
                                      BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}"
                                      Style="{TemplateBinding CalendarItemStyle}" />
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    
     <!--自定义控件样式-->
    
        <Style TargetType="{x:Type control:DateTimePicker}">
            <Setter Property="Validation.ErrorTemplate" Value="{x:Null}"/>
            <Setter Property="Height" Value="30" />
            <Setter Property="Foreground" Value="#C0E9FC" />
            <Setter Property="Background">
                <Setter.Value>
                    <SolidColorBrush Color="#3C5270" Opacity="0.6"></SolidColorBrush>
                </Setter.Value>
            </Setter>
            <Setter Property="HorizontalContentAlignment" Value="Stretch" />
            <Setter Property="VerticalContentAlignment" Value="Center" />
            <Setter Property="BorderThickness" Value="0" />
            <Setter Property="BorderBrush" Value="#C0E9FC" />
            <Setter Property="common:PamirAttachProperty.CornerRadius" Value="3"></Setter>
            <Setter Property="FontSize" Value="14" />
    
            <Setter Property="SnapsToDevicePixels" Value="True" />
    
            <Setter Property="ScrollViewer.CanContentScroll" Value="False" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ComboBox}">
                        <Grid x:Name="PART_Root">
                            <Border x:Name="Bg" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                                    BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"
                                    Background="{TemplateBinding Background}" />
                            <Grid x:Name="PART_InnerGrid" Margin="0">
                                <Grid.ColumnDefinitions>
    
                                    <ColumnDefinition Width="*" />
                                    <ColumnDefinition Width="Auto" />
    
                                </Grid.ColumnDefinitions>
    
                                <!--下拉按钮-->
                                <ToggleButton x:Name="PART_DropDownToggle" IsTabStop="False" Style="{StaticResource DateTimePickerButton}" 
                                              IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Margin="2 1 2 1"
                                              Grid.Column="0" Grid.ColumnSpan="2" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}"
                                              Background="{TemplateBinding Background}"/>
                                <!--水印-->
                                <Border Grid.Column="0">
                                    <TextBlock x:Name="Message"  Padding="0" Visibility="Collapsed" Text="{TemplateBinding common:PamirAttachProperty.Watermark}" 
                                           Foreground="{TemplateBinding Foreground}" IsHitTestVisible="False" Opacity="0.5" HorizontalAlignment="Left" TextAlignment="Center" 
                                           VerticalAlignment="Center" Margin="5,2,5,2" />
                                </Border>
                                <!--主内容区域-->
                                <Grid Grid.Column="0" x:Name="ContentSite" Margin="2 0 0 0" >
                                    <ContentPresenter x:Name="PART_SelectedItem" ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
                                                      ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}"
                                                      Content="{TemplateBinding Text}" ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}"
                                                      HorizontalAlignment="Stretch" Margin="2,0,20,0" 
                                                      IsHitTestVisible="False" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                                                      VerticalAlignment="{TemplateBinding VerticalContentAlignment}"  />
                                </Grid>
                                <!--弹出日历-->
                                <Popup x:Name="PART_Popup" AllowsTransparency="True" Placement="Bottom"
                                       PlacementTarget="{Binding ElementName=PART_Root}" StaysOpen="True" 
                                       IsOpen="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}"
                                       PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}"  >
                                    <Border Background="#08D4FE">
                                        <Grid Margin="1,0,1,15">
                                            <Grid.Background>
                                                <SolidColorBrush Color="#2D3E5F" Opacity="1"></SolidColorBrush>
                                            </Grid.Background>
                                            <Grid.RowDefinitions>
                                                <RowDefinition></RowDefinition>
                                                <RowDefinition Height="Auto"></RowDefinition>
                                            </Grid.RowDefinitions>
                                            <Grid Grid.Row="0" Background="#071A34">
                                                <Calendar x:Name="PART_Calendar" HorizontalAlignment="Center" Grid.Row="0" Style="{StaticResource DefaultCalendar}"
                                                           SelectedDate="{Binding SelectedDate,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay,
                                                    RelativeSource={RelativeSource AncestorType=control:DateTimePicker}}" 
                                                           SelectionMode="SingleDate"></Calendar>
                                            </Grid>
                                            
                                            <Grid Grid.Row="1" SnapsToDevicePixels="True" Margin="0,5,0,0">
                                                
                                                <Grid.RowDefinitions>
                                                    <RowDefinition Height="Auto"></RowDefinition>
                                                    <RowDefinition Height="Auto"></RowDefinition>
                                                </Grid.RowDefinitions>
                                                <StackPanel  Grid.Row="0" Margin="3" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
                                                    <TextBlock Style="{StaticResource TextStyle}" Margin="10,0">时间:</TextBlock>
                                                    <ComboBox Style="{StaticResource MeetingCombobox}" Width="100" MaxDropDownHeight="100" Height="25"
                                                              Text="{Binding Hour,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,
                                                        RelativeSource={RelativeSource AncestorType=control:DateTimePicker}}">
                                                        <ComboBoxItem>00</ComboBoxItem>
                                                        <ComboBoxItem>01</ComboBoxItem>
                                                        <ComboBoxItem>02</ComboBoxItem>
                                                        <ComboBoxItem>03</ComboBoxItem>
                                                        <ComboBoxItem>04</ComboBoxItem>
                                                        <ComboBoxItem>05</ComboBoxItem>
                                                        <ComboBoxItem>06</ComboBoxItem>
                                                        <ComboBoxItem>07</ComboBoxItem>
                                                        <ComboBoxItem>08</ComboBoxItem>
                                                        <ComboBoxItem>09</ComboBoxItem>
                                                        <ComboBoxItem>10</ComboBoxItem>
                                                        <ComboBoxItem>11</ComboBoxItem>
                                                        <ComboBoxItem>12</ComboBoxItem>
                                                        <ComboBoxItem>13</ComboBoxItem>
                                                        <ComboBoxItem>14</ComboBoxItem>
                                                        <ComboBoxItem>15</ComboBoxItem>
                                                        <ComboBoxItem>16</ComboBoxItem>
                                                        <ComboBoxItem>17</ComboBoxItem>
                                                        <ComboBoxItem>18</ComboBoxItem>
                                                        <ComboBoxItem>19</ComboBoxItem>
                                                        <ComboBoxItem>20</ComboBoxItem>
                                                        <ComboBoxItem>21</ComboBoxItem>
                                                        <ComboBoxItem>22</ComboBoxItem>
                                                        <ComboBoxItem>23</ComboBoxItem>
                                                    </ComboBox>
                                                    <TextBlock Style="{StaticResource TextStyle}" Margin="10,0"></TextBlock>
                                                    <ComboBox Style="{StaticResource MeetingCombobox}" MaxDropDownHeight="100" Width="100" Height="25" 
                                                              Text="{Binding Minute,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,
                                                        RelativeSource={RelativeSource AncestorType=control:DateTimePicker}}">
                                                        <ComboBoxItem>00</ComboBoxItem>
                                                        <ComboBoxItem>01</ComboBoxItem>
                                                        <ComboBoxItem>02</ComboBoxItem>
                                                        <ComboBoxItem>03</ComboBoxItem>
                                                        <ComboBoxItem>04</ComboBoxItem>
                                                        <ComboBoxItem>05</ComboBoxItem>
                                                        <ComboBoxItem>06</ComboBoxItem>
                                                        <ComboBoxItem>07</ComboBoxItem>
                                                        <ComboBoxItem>08</ComboBoxItem>
                                                        <ComboBoxItem>09</ComboBoxItem>
                                                        <ComboBoxItem>10</ComboBoxItem>
                                                        <ComboBoxItem>11</ComboBoxItem>
                                                        <ComboBoxItem>12</ComboBoxItem>
                                                        <ComboBoxItem>13</ComboBoxItem>
                                                        <ComboBoxItem>14</ComboBoxItem>
                                                        <ComboBoxItem>15</ComboBoxItem>
                                                        <ComboBoxItem>16</ComboBoxItem>
                                                        <ComboBoxItem>17</ComboBoxItem>
                                                        <ComboBoxItem>18</ComboBoxItem>
                                                        <ComboBoxItem>19</ComboBoxItem>
                                                        <ComboBoxItem>20</ComboBoxItem>
                                                        
                                                        <ComboBoxItem>21</ComboBoxItem>
                                                        <ComboBoxItem>22</ComboBoxItem>
                                                        <ComboBoxItem>23</ComboBoxItem>
                                                        <ComboBoxItem>24</ComboBoxItem>
                                                        <ComboBoxItem>25</ComboBoxItem>
                                                        <ComboBoxItem>26</ComboBoxItem>
                                                        <ComboBoxItem>27</ComboBoxItem>
                                                        <ComboBoxItem>28</ComboBoxItem>
                                                        <ComboBoxItem>29</ComboBoxItem>
                                                        <ComboBoxItem>30</ComboBoxItem>
                                                        <ComboBoxItem>31</ComboBoxItem>
                                                        <ComboBoxItem>32</ComboBoxItem>
                                                        <ComboBoxItem>33</ComboBoxItem>
                                                        <ComboBoxItem>34</ComboBoxItem>
                                                        <ComboBoxItem>35</ComboBoxItem>
                                                        <ComboBoxItem>36</ComboBoxItem>
                                                        <ComboBoxItem>37</ComboBoxItem>
                                                        <ComboBoxItem>38</ComboBoxItem>
                                                        <ComboBoxItem>39</ComboBoxItem>
                                                        <ComboBoxItem>40</ComboBoxItem>
                                                       
                                                        <ComboBoxItem>41</ComboBoxItem>
                                                        <ComboBoxItem>42</ComboBoxItem>
                                                        <ComboBoxItem>43</ComboBoxItem>
                                                        <ComboBoxItem>44</ComboBoxItem>
                                                        <ComboBoxItem>45</ComboBoxItem>
                                                        <ComboBoxItem>46</ComboBoxItem>
                                                        <ComboBoxItem>47</ComboBoxItem>
                                                        <ComboBoxItem>48</ComboBoxItem>
                                                        <ComboBoxItem>49</ComboBoxItem>
                                                        <ComboBoxItem>50</ComboBoxItem>
                                                        <ComboBoxItem>51</ComboBoxItem>
                                                        <ComboBoxItem>52</ComboBoxItem>
                                                        <ComboBoxItem>53</ComboBoxItem>
                                                        <ComboBoxItem>54</ComboBoxItem>
                                                        <ComboBoxItem>55</ComboBoxItem>
                                                        <ComboBoxItem>56</ComboBoxItem>
                                                        <ComboBoxItem>57</ComboBoxItem>
                                                        <ComboBoxItem>58</ComboBoxItem>
                                                        <ComboBoxItem>59</ComboBoxItem>
                                                       
                                                    </ComboBox>
                                                    <TextBlock Style="{StaticResource TextStyle}" Margin="10,0,10,0"></TextBlock>
                                                </StackPanel>
                                                <StackPanel Grid.Row="1" Margin="3" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
                                                    <Button ClickMode="Press" Style="{StaticResource PamirButton}" Margin="0,0,5,0"
                                                            Command="{Binding OkCommand,RelativeSource={RelativeSource AncestorType=control:DateTimePicker}}">确定</Button>
                                                    <Button ClickMode="Press" Style="{StaticResource PamirButton}" Margin="5,0,0,0"
                                                            Command="{Binding CancelCommand,RelativeSource={RelativeSource AncestorType=control:DateTimePicker}}">取消</Button>
                                                </StackPanel>
                                            </Grid>
                                        </Grid>
    
                                    </Border>
                                </Popup>
                            </Grid>
                        </Grid>
    
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsFocused" Value="True">
                                <Setter  Property="BorderThickness" Value="1"/>
    
                            </Trigger>
                            <Trigger Property="IsKeyboardFocusWithin" Value="True">
                                <Setter  Property="BorderThickness" Value="1"/>
                            </Trigger>
                            <Trigger Property="IsEnabled" Value="False">
                                <Setter TargetName="PART_Root" Property="Opacity" Value="0.88"></Setter>
                            </Trigger>
                            <Trigger Property="IsKeyboardFocusWithin" Value="True">
                                <Setter  Property="BorderThickness" Value="1"/>
                            </Trigger>
    
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

    后台代码

    [TemplatePart(Name = "PART_Calendar",Type = typeof(System.Windows.Controls.Calendar))]
        public class DateTimePicker : ComboBox
        {
            public static readonly DependencyProperty DateAndTimeTextProperty = DependencyProperty.Register(
                "DateAndTimeText", typeof(string), typeof(DateTimePicker), new PropertyMetadata(default(string)));
    
            public string DateAndTimeText
            {
                get { return (string)GetValue(DateAndTimeTextProperty); }
                set { SetValue(DateAndTimeTextProperty, value); }
            }
    
    
            public static readonly DependencyProperty SelectedDateProperty = DependencyProperty.Register(
                "SelectedDate", typeof(DateTime?), typeof(DateTimePicker), new PropertyMetadata(default(DateTime?)));
    
            public DateTime? SelectedDate
            {
                get { return (DateTime?)GetValue(SelectedDateProperty); }
                set { SetValue(SelectedDateProperty, value); }
            }
    
            public static readonly DependencyProperty HourProperty = DependencyProperty.Register(
                "Hour", typeof(string), typeof(DateTimePicker), new PropertyMetadata(default(string)));
    
            public string Hour
            {
                get { return (string) GetValue(HourProperty); }
                set { SetValue(HourProperty, value); }
            }
    
            public static readonly DependencyProperty MinuteProperty = DependencyProperty.Register(
                "Minute", typeof(string), typeof(DateTimePicker), new PropertyMetadata(default(string)));
    
            public string Minute
            {
                get { return (string) GetValue(MinuteProperty); }
                set { SetValue(MinuteProperty, value); }
            }
    
            public ICommand OkCommand { get; set; }
    
            public ICommand CancelCommand { get; set; }
    
            protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e)
            {
                base.OnPropertyChanged(e);
    
                if (e.Property == DateAndTimeTextProperty)
                {
                    this.Text = DateAndTimeText;
                    string[] datetime = DateAndTimeText.Split(' ');
                    if (datetime.Length == 2)
                    {
                        SelectedDate = DateTime.Parse(datetime[0]);
                        string[] times = datetime[1].Split(':');
                        Hour = times[0];
                        Minute = times[1];
                    }
                }
            }
    
            public DateTimePicker()
            {
                OkCommand = new DelegateCommand(OkFunc);
                CancelCommand=new DelegateCommand(CancelFunc);
                
                this.Loaded += DateTimePicker_Loaded;
            }
    
            private void DateTimePicker_Loaded(object sender, RoutedEventArgs e)
            {
                if (string.IsNullOrEmpty(DateAndTimeText))
                {
                    string date = $"{DateTime.Now:yyyy-MM-dd HH:mm}";
                    DateAndTimeText = date;
                }
    
                if (Template.FindName("PART_Calendar", this) is System.Windows.Controls.Calendar cander)
                {
                    cander.PreviewMouseUp += (s, ce) =>
                    {
                        if (Mouse.Captured is CalendarItem)
                        {
                            Mouse.Capture(null);
                        }
    
                    };
                }
            }
    
            private void OkFunc()
            {
                if (SelectedDate != null)
                {
                    string date = $"{SelectedDate?.ToString("yyyy-MM-dd")} {Hour}:{Minute}";
                    DateAndTimeText = date;
                }
                else
                {
                    string date = $"{DateTime.Now:yyyy-MM-dd HH:mm}";
                    DateAndTimeText = date;
                }
    
                IsDropDownOpen = false;
            }
    
            private void CancelFunc()
            {
                IsDropDownOpen = false;
            }
    
        }
        /// <summary>
        /// 日期颜色转换器
        /// </summary>
        public class DateConvertToColor : IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
            {
                var calendarDayButton = (CalendarDayButton)value;
                if (calendarDayButton.IsToday)
                {
                    return Brushes.Black;
                }
                var dateTime = (DateTime)calendarDayButton.DataContext;
                if (!calendarDayButton.IsMouseOver && !calendarDayButton.IsSelected && !calendarDayButton.IsBlackedOut && (dateTime.DayOfWeek == DayOfWeek.Saturday || dateTime.DayOfWeek == DayOfWeek.Sunday))
                    return new SolidColorBrush(Color.FromArgb(255, 255, 47, 47));
                else
                    return new SolidColorBrush(Color.FromRgb(192, 233, 252));
            }
    
            public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
            {
                throw new NotImplementedException();
            }
        }
    
        /// <summary>
        /// 日期标题颜色转换器
        /// </summary>
        public class DateTitleConvertToColor : IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
            {
                
                if (value == null)
                {
                    return new SolidColorBrush(Color.FromRgb(192, 233, 252));
                }
    
                string day = value.ToString();
                if (day == "" || day == "" || day.ToUpper() == "SAT" || day.ToUpper() == "SUN")
                {
    
                    return new SolidColorBrush(Color.FromArgb(255, 255, 47, 47));
    
                }
    
                return new SolidColorBrush(Color.FromRgb(192, 233, 252));
    
            }
    
            public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
            {
                throw new NotImplementedException();
            }
        }

    转载请注明出处

    不想平凡,奈何太懒 T_T
  • 相关阅读:
    LeetCode 16 3sum closest
    LeetCode 15 3Sum
    LeetCode 14 Longest Common Prefix
    jQuery数组遍历
    jQuery DOM对象与jQuery对象转换
    jQuery选择器
    jQuery类和样式操作
    js节点操作
    js全选反选
    innerHTML和innerTEXT的区别
  • 原文地址:https://www.cnblogs.com/wuyaxiansheng/p/15380364.html
Copyright © 2011-2022 走看看