转载:https://www.cnblogs.com/lanymy/archive/2013/03/07/2948509.html
前端
<UserControl x:Class="UserCtl.BaseControl.DatePic" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d" d:DesignHeight="35" d:DesignWidth="120" > <UserControl.Resources> <!--日历主体样式表--> <Style x:Key="CalendarItemStyle1" TargetType="{x:Type CalendarItem}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type CalendarItem}"> <ControlTemplate.Resources> <DataTemplate x:Key="{x:Static CalendarItem.DayTitleTemplateResourceKey}"> <!--日历星期几的绑定样式,我格式化成周一,周二等--> <TextBlock Foreground="#666666" FontSize="16" FontFamily="微软雅黑" HorizontalAlignment="Center" Margin="0 15" Text="{Binding StringFormat=周{0} }" VerticalAlignment="Center" /> </DataTemplate> </ControlTemplate.Resources> <Grid x:Name="PART_Root"> <Grid.Resources> <!--设置日历控件 IsEnable=false 时的不可用遮罩层颜色,并且会播放过渡动画--> <SolidColorBrush x:Key="DisabledColor" Color="#A5FFFFFF" /> </Grid.Resources> <VisualStateManager.VisualStateGroups> <VisualStateGroup x:Name="CommonStates"> <VisualState x:Name="Normal" /> <VisualState x:Name="Disabled"> <!--设置日历控件 IsEnable=false 时遮罩层透明度0-1变色动画--> <Storyboard> <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_DisabledVisual" /> </Storyboard> </VisualState> </VisualStateGroup> </VisualStateManager.VisualStateGroups> <Border BorderBrush="#cfcfcf" BorderThickness="0" Background="{TemplateBinding Background}" CornerRadius="2"> <Border> <Grid> <Grid.Resources> <!--日历头左箭头按钮样式模版--> <ControlTemplate x:Key="PreviousButtonTemplate" TargetType="{x:Type Button}"> <!--鼠标悬停在左箭头按钮上时改变鼠标指针样式--> <Grid Cursor="Hand"> <VisualStateManager.VisualStateGroups> <VisualStateGroup x:Name="CommonStates"> <VisualState x:Name="Normal" /> <VisualState x:Name="MouseOver"> <!--鼠标悬停在左箭头按钮上时左箭头颜色变化动画--> <Storyboard> <ColorAnimation Duration="0" To="#FF73A9D8" Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)" Storyboard.TargetName="path" /> </Storyboard> </VisualState> <VisualState x:Name="Disabled"> <Storyboard> <DoubleAnimation Duration="0" To=".5" Storyboard.TargetProperty="(Shape.Fill).(Brush.Opacity)" Storyboard.TargetName="path" /> </Storyboard> </VisualState> </VisualStateGroup> </VisualStateManager.VisualStateGroups> <!--左箭头整个区域矩形块--> <Rectangle Fill="#363636" Opacity="1" Stretch="Fill" /> <Grid> <!--左箭头--> <Path x:Name="path" Data="M288.75,232.25 L288.75,240.625 L283,236.625 z" Fill="#e0e0e0" HorizontalAlignment="Left" Height="15" Width="15" Margin="20,0,0,0" Stretch="Fill" VerticalAlignment="Center" /> </Grid> </Grid> </ControlTemplate> <!--日历头右箭头按钮样式模版,这块跟左箭头样式模版没什么区别--> <ControlTemplate x:Key="NextButtonTemplate" TargetType="{x:Type Button}"> <Grid Cursor="Hand"> <VisualStateManager.VisualStateGroups> <VisualStateGroup x:Name="CommonStates"> <VisualState x:Name="Normal" /> <VisualState x:Name="MouseOver"> <Storyboard> <ColorAnimation Duration="0" To="#FF73A9D8" Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)" Storyboard.TargetName="path" /> </Storyboard> </VisualState> <VisualState x:Name="Disabled"> <Storyboard> <DoubleAnimation Duration="0" To=".5" Storyboard.TargetProperty="(Shape.Fill).(Brush.Opacity)" Storyboard.TargetName="path" /> </Storyboard> </VisualState> </VisualStateGroup> </VisualStateManager.VisualStateGroups> <Rectangle Fill="#363636" Opacity="1" Stretch="Fill" /> <Grid> <Path x:Name="path" Data="M282.875,231.875 L282.875,240.375 L288.625,236 z" Fill="#e0e0e0" HorizontalAlignment="Right" Height="15" Width="15" Margin="0,0,20,0" Stretch="Fill" VerticalAlignment="Center" /> </Grid> </Grid> </ControlTemplate> <!--日历头中间年按钮样式模版--> <ControlTemplate x:Key="HeaderButtonTemplate" TargetType="{x:Type Button}"> <Grid Cursor="Hand"> <VisualStateManager.VisualStateGroups> <VisualStateGroup x:Name="CommonStates"> <VisualState x:Name="Normal" /> <VisualState x:Name="MouseOver"> <Storyboard> <ColorAnimation Duration="0" To="#FF73A9D8" Storyboard.TargetProperty="(TextElement.Foreground).(SolidColorBrush.Color)" Storyboard.TargetName="buttonContent" /> </Storyboard> </VisualState> <VisualState x:Name="Disabled"> <Storyboard> <DoubleAnimation Duration="0" To=".5" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="buttonContent" /> </Storyboard> </VisualState> </VisualStateGroup> </VisualStateManager.VisualStateGroups> <ContentPresenter x:Name="buttonContent" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" TextElement.Foreground="#e0e0e0" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="1,4,1,9" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" /> </Grid> </ControlTemplate> </Grid.Resources> <Grid.RowDefinitions> <!--日历头,左箭头,年,右箭头--> <RowDefinition Height="Auto" /> <!--日历内容,星期几和具体的日期几号几号--> <RowDefinition Height="*" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <!--左箭头--> <ColumnDefinition Width="Auto" /> <!--年--> <ColumnDefinition Width="*" /> <!--右箭头--> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <!--头,左箭头,年,右箭头,整体的背景色--> <Border Grid.Row="0" Grid.ColumnSpan="3" Background="#363636"></Border> <!--左箭头--> <Button x:Name="PART_PreviousButton" Grid.Column="0" Focusable="False" HorizontalAlignment="Left" Grid.Row="0" Template="{StaticResource PreviousButtonTemplate}" /> <!--年--> <Button x:Name="PART_HeaderButton" Grid.Column="1" FontFamily="微软雅黑" Focusable="False" FontSize="26" HorizontalAlignment="Center" Grid.Row="0" Template="{StaticResource HeaderButtonTemplate}" VerticalAlignment="Center" /> <!--右箭头--> <Button x:Name="PART_NextButton" Grid.Column="2" Focusable="False" HorizontalAlignment="Right" Grid.Row="0" Template="{StaticResource NextButtonTemplate}" /> <!--日期几号几号内容显示--> <Border Grid.Row="1" Grid.ColumnSpan="3" Margin="0" BorderBrush="#cfcfcf" BorderThickness="3,0,3,3"> <Grid x:Name="PART_MonthView" HorizontalAlignment="Center" Visibility="Visible"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="auto" /> <RowDefinition Height="*" /> <RowDefinition Height="*" /> <RowDefinition Height="*" /> <RowDefinition Height="*" /> <RowDefinition Height="*" /> <RowDefinition Height="*" /> </Grid.RowDefinitions> </Grid> </Border> <!--月和年内容显示--> <Grid x:Name="PART_YearView" Grid.ColumnSpan="3" HorizontalAlignment="Center" Margin="6,-3,7,6" Grid.Row="1" Visibility="Hidden" VerticalAlignment="Center"> <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> </Border> <!--日历不可用的遮罩层--> <Rectangle x:Name="PART_DisabledVisual" Fill="{StaticResource DisabledColor}" Opacity="0" RadiusY="2" RadiusX="2" Stretch="Fill" Stroke="{StaticResource DisabledColor}" StrokeThickness="1" Visibility="Collapsed" /> </Grid> <!--触发器属性--> <ControlTemplate.Triggers> <Trigger Property="IsEnabled" Value="False"> <Setter Property="Visibility" TargetName="PART_DisabledVisual" Value="Visible" /> </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> <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="CalendarDayButtonStyle1" TargetType="{x:Type CalendarDayButton}"> <Setter Property="Margin" Value="1" /> <Setter Property="MinWidth" Value="5" /> <Setter Property="MinHeight" Value="5" /> <Setter Property="FontSize" Value="22" /> <Setter Property="FontFamily" Value="微软雅黑" /> <Setter Property="HorizontalContentAlignment" Value="Center" /> <Setter Property="VerticalContentAlignment" Value="Center" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type CalendarDayButton}"> <Grid> <VisualStateManager.VisualStateGroups> <VisualStateGroup x:Name="CommonStates"> <VisualStateGroup.Transitions> <VisualTransition GeneratedDuration="0:0:0.1" /> </VisualStateGroup.Transitions> <VisualState x:Name="Normal" /> <!--悬停的颜色动画--> <VisualState x:Name="MouseOver"> <Storyboard> <DoubleAnimation Duration="0" To="0.5" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="HighlightBackground" /> </Storyboard> </VisualState> <!--按下后动画--> <VisualState x:Name="Pressed"> <Storyboard> <DoubleAnimation Duration="0" To="0.5" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="HighlightBackground" /> </Storyboard> </VisualState> <!--不可用动画--> <VisualState x:Name="Disabled"> <Storyboard> <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="HighlightBackground" /> <DoubleAnimation Duration="0" To=".35" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="NormalText" /> </Storyboard> </VisualState> </VisualStateGroup> <VisualStateGroup x:Name="SelectionStates"> <VisualStateGroup.Transitions> <VisualTransition GeneratedDuration="0" /> </VisualStateGroup.Transitions> <VisualState x:Name="Unselected" /> <!--选中某日期的样式--> <VisualState x:Name="Selected"> <Storyboard> <DoubleAnimation Duration="0" To=".75" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SelectedBackground" /> <ColorAnimation Duration="0" To="white" Storyboard.TargetProperty="(TextElement.Foreground).(SolidColorBrush.Color)" Storyboard.TargetName="NormalText" /> </Storyboard> </VisualState> </VisualStateGroup> <VisualStateGroup x:Name="CalendarButtonFocusStates"> <VisualStateGroup.Transitions> <VisualTransition GeneratedDuration="0" /> </VisualStateGroup.Transitions> <VisualState x:Name="CalendarButtonFocused"> <Storyboard> <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Visibility" Storyboard.TargetName="DayButtonFocusVisual"> <DiscreteObjectKeyFrame KeyTime="0"> <DiscreteObjectKeyFrame.Value> <Visibility>Visible</Visibility> </DiscreteObjectKeyFrame.Value> </DiscreteObjectKeyFrame> </ObjectAnimationUsingKeyFrames> </Storyboard> </VisualState> <VisualState x:Name="CalendarButtonUnfocused"> <Storyboard> <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Visibility" Storyboard.TargetName="DayButtonFocusVisual"> <DiscreteObjectKeyFrame KeyTime="0"> <DiscreteObjectKeyFrame.Value> <Visibility>Collapsed</Visibility> </DiscreteObjectKeyFrame.Value> </DiscreteObjectKeyFrame> </ObjectAnimationUsingKeyFrames> </Storyboard> </VisualState> </VisualStateGroup> <VisualStateGroup x:Name="ActiveStates"> <VisualStateGroup.Transitions> <VisualTransition GeneratedDuration="0" /> </VisualStateGroup.Transitions> <VisualState x:Name="Active" /> <VisualState x:Name="Inactive"> <Storyboard> <ColorAnimation Duration="0" To="#b4b3b3" Storyboard.TargetProperty="(TextElement.Foreground).(SolidColorBrush.Color)" Storyboard.TargetName="NormalText" /> </Storyboard> </VisualState> </VisualStateGroup> <VisualStateGroup x:Name="DayStates"> <VisualStateGroup.Transitions> <VisualTransition GeneratedDuration="0" /> </VisualStateGroup.Transitions> <VisualState x:Name="RegularDay" /> <!--今天的样式--> <VisualState x:Name="Today"> <Storyboard> <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="TodayBackground" /> <ColorAnimation Duration="0" To="#666666" Storyboard.TargetProperty="(TextElement.Foreground).(SolidColorBrush.Color)" Storyboard.TargetName="NormalText" /> <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="imgToday"> <DiscreteObjectKeyFrame KeyTime="0"> <DiscreteObjectKeyFrame.Value> <Visibility>Visible</Visibility> </DiscreteObjectKeyFrame.Value> </DiscreteObjectKeyFrame> </ObjectAnimationUsingKeyFrames> </Storyboard> </VisualState> </VisualStateGroup> <!--过期日期的--> <VisualStateGroup x:Name="BlackoutDayStates"> <VisualStateGroup.Transitions> <VisualTransition GeneratedDuration="0" /> </VisualStateGroup.Transitions> <VisualState x:Name="NormalDay" /> <VisualState x:Name="BlackoutDay"> <Storyboard> <DoubleAnimation Duration="0" To=".2" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="Blackout" /> </Storyboard> </VisualState> </VisualStateGroup> </VisualStateManager.VisualStateGroups> <Border BorderBrush="#bbbbbb" BorderThickness="1"> <Border BorderBrush="white" BorderThickness="2,2,0,0" Margin="1,1,0,0"></Border> </Border> <Rectangle x:Name="TodayBackground" Fill="#c6c6c6" Opacity="0" RadiusY="1" RadiusX="1" /> <Rectangle x:Name="SelectedBackground" Fill="#6eafbf" Opacity="0" RadiusY="1" RadiusX="1" /> <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" /> <Rectangle x:Name="HighlightBackground" Fill="#FFBADDE9" Opacity="0" RadiusY="1" RadiusX="1" /> <ContentPresenter x:Name="NormalText" TextElement.Foreground="#666666" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" /> <Path x:Name="Blackout" Data="M8.1772461,11.029181 L10.433105,11.029181 L11.700684,12.801641 L12.973633,11.029181 L15.191895,11.029181 L12.844727,13.999395 L15.21875,17.060919 L12.962891,17.060919 L11.673828,15.256231 L10.352539,17.060919 L8.1396484,17.060919 L10.519043,14.042364 z" Fill="#FF000000" HorizontalAlignment="Stretch" Margin="3" Opacity="0" RenderTransformOrigin="0.5,0.5" Stretch="Fill" VerticalAlignment="Stretch" /> <Rectangle x:Name="DayButtonFocusVisual" IsHitTestVisible="false" RadiusY="1" RadiusX="1" Stroke="#FF45D6FA" Visibility="Collapsed" /> <Image x:Name="imgToday" Width="44" Height="34" Source="/Images/Today.png" VerticalAlignment="Top" HorizontalAlignment="Left" Visibility="Hidden" /> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> <Style x:Key="CalendarButtonStyle1" TargetType="{x:Type CalendarButton}"> <Setter Property="Background" Value="#FFBADDE9" /> <Setter Property="MinWidth" Value="80" /> <Setter Property="MinHeight" Value="80" /> <Setter Property="Margin" Value="20" /> <Setter Property="FontSize" Value="25" /> <Setter Property="HorizontalContentAlignment" Value="Center" /> <Setter Property="VerticalContentAlignment" Value="Center" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type CalendarButton}"> <Grid> <VisualStateManager.VisualStateGroups> <VisualStateGroup x:Name="CommonStates"> <VisualStateGroup.Transitions> <VisualTransition GeneratedDuration="0:0:0.1" /> </VisualStateGroup.Transitions> <VisualState x:Name="Normal" /> <VisualState x:Name="MouseOver"> <Storyboard> <DoubleAnimation Duration="0" To=".5" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="Background" /> </Storyboard> </VisualState> <VisualState x:Name="Pressed"> <Storyboard> <DoubleAnimation Duration="0" To=".5" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="Background" /> </Storyboard> </VisualState> </VisualStateGroup> <VisualStateGroup x:Name="SelectionStates"> <VisualStateGroup.Transitions> <VisualTransition GeneratedDuration="0" /> </VisualStateGroup.Transitions> <VisualState x:Name="Unselected" /> <VisualState x:Name="Selected"> <Storyboard> <DoubleAnimation Duration="0" To=".75" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SelectedBackground" /> </Storyboard> </VisualState> </VisualStateGroup> <VisualStateGroup x:Name="ActiveStates"> <VisualStateGroup.Transitions> <VisualTransition GeneratedDuration="0" /> </VisualStateGroup.Transitions> <VisualState x:Name="Active" /> <VisualState x:Name="Inactive"> <Storyboard> <ColorAnimation Duration="0" To="#FF777777" Storyboard.TargetProperty="(TextElement.Foreground).(SolidColorBrush.Color)" Storyboard.TargetName="NormalText" /> </Storyboard> </VisualState> </VisualStateGroup> <VisualStateGroup x:Name="CalendarButtonFocusStates"> <VisualStateGroup.Transitions> <VisualTransition GeneratedDuration="0" /> </VisualStateGroup.Transitions> <VisualState x:Name="CalendarButtonFocused"> <Storyboard> <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Visibility" Storyboard.TargetName="CalendarButtonFocusVisual"> <DiscreteObjectKeyFrame KeyTime="0"> <DiscreteObjectKeyFrame.Value> <Visibility>Visible</Visibility> </DiscreteObjectKeyFrame.Value> </DiscreteObjectKeyFrame> </ObjectAnimationUsingKeyFrames> </Storyboard> </VisualState> <VisualState x:Name="CalendarButtonUnfocused"> <Storyboard> <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Visibility" Storyboard.TargetName="CalendarButtonFocusVisual"> <DiscreteObjectKeyFrame KeyTime="0"> <DiscreteObjectKeyFrame.Value> <Visibility>Collapsed</Visibility> </DiscreteObjectKeyFrame.Value> </DiscreteObjectKeyFrame> </ObjectAnimationUsingKeyFrames> </Storyboard> </VisualState> </VisualStateGroup> </VisualStateManager.VisualStateGroups> <Rectangle x:Name="SelectedBackground" Fill="{TemplateBinding Background}" Opacity="0" RadiusY="1" RadiusX="1" /> <Rectangle x:Name="Background" Fill="{TemplateBinding Background}" Opacity="0" RadiusY="1" RadiusX="1" /> <ContentPresenter x:Name="NormalText" TextElement.Foreground="#FF333333" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="1,0,1,1" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" /> <Rectangle x:Name="CalendarButtonFocusVisual" IsHitTestVisible="false" RadiusY="1" RadiusX="1" Stroke="#FF45D6FA" Visibility="Collapsed" /> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsFocused" Value="True"> <Setter Property="Visibility" TargetName="CalendarButtonFocusVisual" Value="Visible" /> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> </UserControl.Resources> <Grid > <Popup x:Name="DateTimePopup" Placement="Bottom" IsOpen="True" > <Calendar Name="dtpDate" Background="Bisque" MouseLeave="dtpDate_MouseLeave" Style="{DynamicResource CalendarStyle1}" CalendarItemStyle="{DynamicResource CalendarItemStyle1}" CalendarButtonStyle="{DynamicResource CalendarButtonStyle1}" CalendarDayButtonStyle="{DynamicResource CalendarDayButtonStyle1}" SelectedDatesChanged="Calendar_SelectedDatesChanged" Height="384" Width="460" /> </Popup> <Button x:Name="txtDate" FontSize="18" HorizontalContentAlignment="Left" VerticalContentAlignment="Center" BorderThickness="2" BorderBrush="Blue" Click="txtDate_CLICK" > <Button.Resources> <VisualBrush x:Key="HintText" TileMode="None" Opacity="0.5" Stretch="None" AlignmentX="Left"> <VisualBrush.Visual> <TextBlock Foreground="#FFFFFF" Padding="8,0,0,0" FontSize="16" Text="点击选择日期"/> </VisualBrush.Visual> </VisualBrush> </Button.Resources> <Button.Style> <Style TargetType="{x:Type Button}"> <Style.Triggers> <Trigger Property="IsEnabled" Value="true"> <Setter Property="Background" Value="#1C4C80"/> <Setter Property="Foreground" Value="#FFFFFF"/> </Trigger> <Trigger Property="Content" Value="{x:Null}"> <Setter Property="Background" Value="{StaticResource HintText}"/> </Trigger> <Trigger Property="Content" Value=""> <Setter Property="Background" Value="{StaticResource HintText}"/> </Trigger> </Style.Triggers> </Style> </Button.Style> </Button> </Grid> </UserControl>
后台
namespace UserCtl.BaseControl { /// <summary> /// DatePic.xaml 的交互逻辑 /// </summary> public partial class DatePic : UserControl { private static readonly ILog log = LogManager.GetLogger(typeof(DatePic)); public DateTime? CurrentDate { get; set; } /// <summary> /// 面板是否获取到焦点 /// </summary> public bool IsPanelGotFoces = false; /// <summary> /// 是否正在显示面板 /// </summary> public bool IsShowPanel = false; public DatePic() { InitializeComponent(); SetHide(); log.ErrorFormat("画面初始化设置:{0}","隐藏"); SetFormValue(); } /// <summary> /// 设置控件的日期值 /// </summary> /// <param name="dt"></param> public void SetValue(DateTime dt) { try { CurrentDate = Convert.ToDateTime(dt.ToString("yyyy-MM-dd")); SetFormValue(); } catch (Exception) { throw; } } /// <summary> /// 更新画面显示内容 /// </summary> private void SetFormValue() { try { if (CurrentDate == null) { txtDate.Content = null; } else { txtDate.Content = Convert.ToDateTime(CurrentDate).ToString("yyyy-MM-dd"); } } catch (Exception) { throw; } } private string _Text { get; set; } public string Text { get { if (CurrentDate == null) { return ""; } else { return Convert.ToDateTime(CurrentDate).ToString("yyyy-MM-dd"); } } set { try { CurrentDate = Convert.ToDateTime(value); SetFormValue(); } catch (Exception) { } } } private void txtDate_CLICK(object sender, RoutedEventArgs e) { try { SetFormValue(); if (IsShowPanel) { SetHide(); log.ErrorFormat("txtDate_CLICK化设置:{0}", "隐藏"); } else { SetShow(); log.ErrorFormat("txtDate_CLICK化设置:{0}", "显示"); } } catch (Exception) { throw; } } private void Calendar_SelectedDatesChanged(object sender, SelectionChangedEventArgs e) { try { DateTime SelectDate = dtpDate.SelectedDate.Value; Text = SelectDate.ToString("yyyy-MM-dd"); SetHide(); log.ErrorFormat("Calendar_SelectedDatesChanged化设置:{0}", "隐藏"); IsShowPanel = false; SetFormValue(); } catch (Exception) { throw; } } /// <summary> /// 显示日期选择面板 /// </summary> private void SetShow() { DateTimePopup.IsOpen = true; IsShowPanel = true; } /// <summary> /// 隐藏日期选择面板 /// </summary> private void SetHide() { DateTimePopup.IsOpen = false; IsShowPanel = false; } private void dtpDate_MouseLeave(object sender, MouseEventArgs e) { SetHide(); } } }