有色建设网站,做影视免费网站违法吗,视觉中国官网,网站上的二维码怎么做的什么是DatePicker#xff0c;Calendar
Calendar#xff1a;日历#xff08;显示年月日视图控件#xff09;DatePicker#xff1a;日期选择器#xff08;是一个更小的控件#xff0c;点击控件时才会弹出一个日历#xff09;
Calendar使用 常用属性
DisplayMode#…什么是DatePickerCalendar
Calendar日历显示年月日视图控件DatePicker日期选择器是一个更小的控件点击控件时才会弹出一个日历
Calendar使用 常用属性
DisplayMode显示日历时最高的一级以十年、年、月来显示一般用MonthDisplayDateStart日历的开始日期DisplayDateEnd日历的结束日期DisplayDate显示开始月份和日期SelectedDate选择的日期FirstDayOfWeek某一天作为日历第一列的第一天FirstDayOfWeekMondayIsTodayHighlighted设置今日是否高亮显示True为高亮显示SelectionMode日期选择范围MultipleRange为可选择多个日期范围
常用事件
SelectedDatesChanged当选择的日期发生改变时
private void Calender_SelectedDatesChanged(object sender, SelectionChangedEventArgs e)
{//SelectionModeSingleDatethis.Title Calender.SelectedDate.ToString();//SelectionModeMultipleRange/*for (int i 0; i Calender.SelectedDates.Count; i){this.s this.Calender.SelectedDates[i].ToString();this.Title this.s;}*/
}日期限制 根据您使用 Calendar 控件的目的您可能希望日期不能被选中且颜色变淡可使用BlackoutDates集合添加限定日期范围。 Calendar x:Namecalendar Height170 Width200 Calendar.BlackoutDatesCalendarDateRange Start01.01.2024 End01.03.2024 /CalendarDateRange Start01.06.2024 End01.09.2024 //Calendar.BlackoutDates
/Calendar
DatePicker使用 常用属性
IsDropDownOpen日历视图是否一开始就展开“True”为一开始就展开
常用事件
DateValidationError用户输入非法的日期时触发
private void DatePicker_DateValidationError(object sender, DatePickerDateValidationErrorEventArgs e)
{MessageBox.Show($输入非法日期{e.Text}错误原因是{e.Exception.Message});
}Calendar样式修改
Calendar的主要样式
CalendarStyle日历框架样式CalendarButtonStyle日历面板样式CalendarDayButtonStyle天的样式CalendarItemStyle月份样式 Window x:ClassCalendarDemo.MainWindowxmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlxmlns:dhttp://schemas.microsoft.com/expression/blend/2008xmlns:mchttp://schemas.openxmlformats.org/markup-compatibility/2006xmlns:localclr-namespace:CalendarDemomc:IgnorabledTitleMainWindow Height450 Width800Window.Resources!--日历样式--Style x:KeyDefaultCalendar TargetType{x:Type Calendar}Setter PropertySnapsToDevicePixels ValueTrue /!--日历背景色--Setter PropertyBackground Value#FF76AEE4/!--日历边框颜色--Setter PropertyBorderBrush Value#FFA31ECC/!--日历边框线条宽度--Setter PropertyBorderThickness Value2 /!--日历字体样式--Setter PropertyFontFamily ValueArial /!--今日是否高亮--Setter PropertyIsTodayHighlighted ValueTrue /Setter PropertyTemplateSetter.ValueControlTemplate TargetType{x:Type Calendar}CalendarItem x:NamePART_CalendarItem BorderBrush{TemplateBinding BorderBrush} FontFamily{TemplateBinding FontFamily} BorderThickness{TemplateBinding BorderThickness} Background{TemplateBinding Background}//ControlTemplate/Setter.Value/Setter/Style/Window.ResourcesGrid!--使用ViewBox可以让日历试图大小跟随窗体大小一起改变--Viewbox VerticalAlignmentCenter HorizontalAlignmentCenter Calendar Style{DynamicResource DefaultCalendar}Margin150 0 150 0Height170Width200FontSize20 //Viewbox/Grid
/Window
自定义DatePicker控件 通过自定义的DatePicker控件可显示日期和时间代码有详细注释方便移植到项目。 UserControl x:ClassCalendarDemo.DateTimePickerxmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlxmlns:mchttp://schemas.openxmlformats.org/markup-compatibility/2006 xmlns:dhttp://schemas.microsoft.com/expression/blend/2008 xmlns:localclr-namespace:CalendarDemomc:Ignorabled Nameownd:DesignHeight25 d:DesignWidth200 GotFocusown_GotFocus LostFocusown_LostFocus UserControl.Resources!--日期时间 下拉框样式--ControlTemplate x:KeyComboBoxToggleTimeButton TargetType{x:Type ToggleButton}Grid Border Grid.Column1 BackgroundWhite Opacity0 CursorHand/Path x:NameArrow Grid.Column0 VisibilityCollapsed DataM 0 0 6 6 12 0 Stroke#BBBBBB VerticalAlignmentCenter HorizontalAlignmentRight StretchNone FillTransparent Margin0,10,8,9 RenderTransformOrigin0.5,0.5//GridControlTemplate.TriggersTrigger PropertyIsChecked ValuetrueSetter TargetNameArrow PropertyRenderTransformSetter.ValueRotateTransform Angle180//Setter.Value/SetterSetter TargetNameArrow PropertyMargin Value0,10,8,9 //Trigger/ControlTemplate.Triggers/ControlTemplateStyle x:KeyDateTimeComboBoxStyle TargetType{x:Type ComboBox}Setter PropertyItemContainerStyleSetter.ValueStyle TargetType{x:Type ComboBoxItem}Setter PropertyWidth Value30/Setter PropertyHeight Value22/Setter PropertyTemplateSetter.ValueControlTemplate TargetType{x:Type ComboBoxItem}Grid Height{TemplateBinding Height} Width{TemplateBinding Width} BackgroundWhite CursorHandBorder x:Name_borderbg BackgroundTransparent CornerRadius3 Height20/TextBlock TextAlignmentCenter VerticalAlignmentCenter x:Name_txt Foreground{TemplateBinding Foreground} Text{TemplateBinding Content}/Border x:Name_border BackgroundLightBlue Opacity0//GridControlTemplate.TriggersTrigger PropertyIsSelected ValuetrueSetter TargetName_txt PropertyForeground Value#FF0318E6//TriggerMultiTriggerMultiTrigger.ConditionsCondition PropertyIsMouseOver Valuetrue//MultiTrigger.ConditionsSetter TargetName_borderbg PropertyBackground ValueLightBlue //MultiTrigger/ControlTemplate.Triggers/ControlTemplate/Setter.Value/Setter/Style/Setter.Value/SetterSetter PropertyTemplateSetter.ValueControlTemplate TargetType{x:Type ComboBox}GridBorder BorderThickness1 BorderBrush{TemplateBinding BorderBrush} CornerRadius3/ContentPresenter HorizontalAlignmentCenter x:NameContentSite VerticalAlignmentCenter Content{TemplateBinding SelectionBoxItem} ContentTemplate{TemplateBinding SelectionBoxItemTemplate} ContentTemplateSelector{TemplateBinding ItemTemplateSelector} IsHitTestVisibleFalse/!--ToggleButton 已数据绑定到 ComboBox 本身以切换 IsDropDownOpen--ToggleButton Template{StaticResource ComboBoxToggleTimeButton} x:NameToggleButton Focusablefalse IsChecked{Binding IsDropDownOpen, ModeTwoWay, RelativeSource{RelativeSource TemplatedParent}} ClickModePress/!--必须将 TextBox 命名为 PART_EditableTextBox否则 ComboBox 将无法识别它--TextBox VisibilityHidden BorderThickness0 Margin2 0 0 0 x:NamePART_EditableTextBox VerticalAlignmentCenter FocusableTrue BackgroundTransparent IsReadOnly{TemplateBinding IsReadOnly}/!--Popup 可显示 ComboBox 中的项列表。IsOpen 已数据绑定到通过 ComboBoxToggleButton 来切换的 IsDropDownOpen--Popup IsOpen{TemplateBinding IsDropDownOpen} PlacementBottom HorizontalOffset-6 x:NamePopup FocusableFalse AllowsTransparencyTrue PopupAnimationSlide Grid MaxHeight120 MinWidth{TemplateBinding ActualWidth} BackgroundWhite x:NameDropDown SnapsToDevicePixelsTrue Width40 Border x:NameDropDownBorder BorderBrushLightGray BorderThickness1 CornerRadius3 BackgroundWhite/ScrollViewer Margin1 SnapsToDevicePixelsTrue HorizontalScrollBarVisibilityHidden VerticalScrollBarVisibilityHidden CanContentScrollTrue!--StackPanel 用于显示子级方法是将 IsItemsHost 设置为 True--StackPanel IsItemsHostTrue KeyboardNavigation.DirectionalNavigationContained Margin0,5 Background{TemplateBinding Background}//ScrollViewer/Grid/Popup/GridControlTemplate.TriggersTrigger PropertyIsEditable ValuetrueSetter TargetNamePART_EditableTextBox PropertyVisibility ValueVisible //Trigger/ControlTemplate.Triggers/ControlTemplate/Setter.Value/Setter/Stylelocal:BoolToVisibleConverter x:KeyboolToVisible/local:BoolToVisibleConverter/UserControl.ResourcesGridBorder Name_border BorderBrush#E6E6E6 BorderThickness2 BackgroundWhite Margin0,0,0,0 CornerRadius4/TextBlock NametextTime HorizontalAlignmentLeft FontSize{Binding DTFontSize,ElementNameown} Foreground{Binding DTForground,ElementNameown}VerticalAlignmentCenter Text{Binding DateTimeValue,ElementNameown} Margin10,0,0,0/TextBlock Nameshuiyin Text选择日期与时间 Margin10,0,0,0 FontSize{Binding DTFontSize,ElementNameown} VerticalAlignmentCenter ForegroundGray Visibility{Binding ElementNametextTime, Path Text.IsEmpty,Converter{StaticResource boolToVisible}} HorizontalAlignmentLeft/Button Nameicon Style{StaticResource ButtonStyle1} MinWidth15 MinHeight15 MaxHeight18 MaxWidth18 Margin0,5,5,5 Width{Binding ActualHeight,RelativeSource{RelativeSource Self}} HorizontalAlignmentRight Clickicon_ClickButton.BackgroundImageBrush ImageSourcepack://application:,,,/Assets/ic_ziyuan_date.png /ImageBrush/Button.Background/ButtonPopup x:Namepopup StaysOpenFalse PlacementBottom VerticalOffset10 Border BorderBrush#DDDDDD BorderThickness2 Width200StackPanel BackgroundWhite Viewbox Calendar NamecalDate Style{DynamicResource CalendarStyle1} CalendarItemStyle{DynamicResource CalendarItemStyle1 }CalendarDayButtonStyle{DynamicResource CalendarDayButtonStyle}CalendarButtonStyle{DynamicResource CalendarButtonStyle}SelectedDatesChangedcalDate_SelectedDatesChanged BorderBrush{x:Null}//ViewboxGrid Namegrid Height24 Width{Binding ActualWidth,ElementNameown} Margin0,-10,0,5 VisibilityVisible Grid.ColumnDefinitionsColumnDefinition Width25*/ColumnDefinition Width94*/ColumnDefinition Width40*//Grid.ColumnDefinitionsBorder BorderBrush#EE7942 Grid.ColumnSpan3 BorderThickness0,0,0,1 BackgroundWhite CornerRadius0,0,4,4 Margin1,-3 Opacity0.8 VisibilityVisible/BorderTextBlock Text时间 HorizontalAlignmentCenter VerticalAlignmentCenter /Grid Grid.Column1 NameshowTime Height22 VerticalAlignmentCenterGrid.ColumnDefinitionsColumnDefinition/ColumnDefinition Width3/ColumnDefinition/ColumnDefinition Width3/ColumnDefinition//Grid.ColumnDefinitionsComboBox NamehourCbx Grid.Column0 HorizontalContentAlignmentCenter Style{StaticResource DateTimeComboBoxStyle} ForegroundBlack SelectedIndex0 Margin0 /TextBlock Text: ForegroundGray Grid.Column1 VerticalAlignmentCenter Margin0,-3,0,0 HorizontalAlignmentCenter/TextBlockComboBox NameminCbx Grid.Column2 HorizontalContentAlignmentCenter Style{StaticResource DateTimeComboBoxStyle} ForegroundBlack SelectedIndex0 Margin0 /TextBlock Text: ForegroundGray Grid.Column3 VerticalAlignmentCenter Margin0,-3,0,0 HorizontalAlignmentCenter/TextBlockComboBox NamesecondCbx HorizontalContentAlignmentCenter Grid.Column4 Style{StaticResource DateTimeComboBoxStyle} ForegroundBlack SelectedIndex0 Margin0 //GridButton Nameok Content确定 Grid.Column2 Width35 Height18 VerticalAlignmentCenter HorizontalAlignmentCenterClickok_Click Style{DynamicResource ButtonStyle2}/Button/Grid/StackPanel/Border/Popup/Grid
/UserControl自定义DatePicker控件实例链接
https://download.csdn.net/download/lvxingzhe3/88701624
参考
基础内容: 自定义新的 WPF Calendar 控件 | Microsoft Learn
https://www.cnblogs.com/lzjsky/p/17211723.html
wpf自定义样式DatePickerStyle及Calendar控件_wpf中calendar控件美化-CSDN博客
https://www.cnblogs.com/anding/p/4979764.html
WPF 入门教程Calendar控件