跳到主要内容

github/tai

公开

Tai · Windows 软件与网站使用时长统计。上游 Planshit/Tai 的源码镜像,非灵栈原创;MIT 许可。来源:https://github.com/Planshit/Tai 。本次为手动同步,暂不提供安装包。

提交记录
修改UI/Controls/DatePickerBar/DatePickerBar.cs+118 −19看文件
@@ -7,9 +7,11 @@ using System.Linq;
77using System.Text;
88using System.Windows;
99using System.Windows.Controls;
10新增:using System.Windows.Controls.Primitives;
1011using System.Windows.Input;
1112using System.Windows.Media;
1213using System.Windows.Media.Animation;
14新增:using UI.Controls.List;
1315using UI.Controls.Navigation.Models;
1416
1517namespace UI.Controls.DatePickerBar
@@ -29,7 +31,7 @@ namespace UI.Controls.DatePickerBar
2931 var control = d as DatePickerBar;
3032 if (e.NewValue != e.OldValue)
3133 {
32删除: control.Render();
34新增: control.Render(control.SelectedDate);
3335 }
3436 }
3537
@@ -59,6 +61,21 @@ namespace UI.Controls.DatePickerBar
5961 public static readonly DependencyProperty SelectedDateStringProperty =
6062 DependencyProperty.Register("SelectedDateString", typeof(string), typeof(DatePickerBar));
6163
64新增: /// <summary>
65新增: /// 是否显示日期选择弹出层
66新增: /// </summary>
67新增: public bool IsShowDatePickerPopup
68新增: {
69新增: get { return (bool)GetValue(IsShowDatePickerPopupProperty); }
70新增: set { SetValue(IsShowDatePickerPopupProperty, value); }
71新增: }
72新增: public static readonly DependencyProperty IsShowDatePickerPopupProperty =
73新增: DependencyProperty.Register("IsShowDatePickerPopup", typeof(bool), typeof(DatePickerBar));
74新增:
75新增:
76新增:
77新增:
78新增:
6279 private StackPanel Container;
6380 private ScrollViewer ScrollViewer;
6481 private Dictionary<DateTime, DatePickerBarItem> ItemsDictionary;
@@ -70,6 +87,12 @@ namespace UI.Controls.DatePickerBar
7087 private Border ActiveBlock;
7188 // 动画
7289 Storyboard storyboard;
90新增: // 日期选择弹出层
91新增: private Popup DatePickerPopup;
92新增: private BaseList YearsList, MonthsList;
93新增: private Border Date;
94新增: private ScrollViewer YearsListScrollViewer;
95新增: private StackPanel MonthSelect;
7396 public DatePickerBar()
7497 {
7598 DefaultStyleKey = typeof(DatePickerBar);
@@ -86,12 +109,86 @@ namespace UI.Controls.DatePickerBar
86109 Container = GetTemplateChild("Container") as StackPanel;
87110 ActiveBlock = GetTemplateChild("ActiveBlock") as Border;
88111 ScrollViewer = GetTemplateChild("ScrollViewer") as ScrollViewer;
89删除: Render();
112新增: DatePickerPopup = GetTemplateChild("DatePickerPopup") as Popup;
113新增: Date = GetTemplateChild("Date") as Border;
114新增: YearsList = GetTemplateChild("YearsList") as BaseList;
115新增: MonthsList = GetTemplateChild("MonthsList") as BaseList;
116新增: YearsListScrollViewer = GetTemplateChild("YearsListScrollViewer") as ScrollViewer;
117新增: MonthSelect = GetTemplateChild("MonthSelect") as StackPanel;
118新增:
119新增: Init();
120新增:
121新增: // 渲染日期
122新增: Render(DateTime.Now);
90123
91124
92125 }
93126
127新增: /// <summary>
128新增: /// 初始化控件数据
129新增: /// </summary>
130新增: private void Init()
131新增: {
132新增: DatePickerPopup.Closed += (e, c) =>
133新增: {
134新增: IsShowDatePickerPopup = false;
135新增: VisualStateManager.GoToState(this, "Normal", true);
136新增: };
137新增:
138新增: Date.MouseEnter += (e, c) =>
139新增: {
140新增: VisualStateManager.GoToState(this, "DateMouseOver", true);
141新增: };
142新增: Date.MouseLeave += (e, c) =>
143新增: {
144新增: VisualStateManager.GoToState(this, "Normal", true);
145新增: };
146新增: Date.MouseLeftButtonUp += (e, c) =>
147新增: {
148新增: IsShowDatePickerPopup = true;
149新增: VisualStateManager.GoToState(this, "ShowPopup", true);
150新增: };
151新增:
152新增: // 填充年份数据
153新增: YearsList.SelectedItem = DateTime.Now.Year.ToString();
154新增: //YearsList.SelectedItem = "2073";
155新增:
156新增: for (int i = 2021; i <= DateTime.Now.Year; i++)
157新增: {
158新增: YearsList.Items.Add(i.ToString());
159新增: }
160新增: YearsList.SelectedItemChanged += DateChanged;
94161
162新增: if (ShowType == DatePickerShowType.Day)
163新增: {
164新增: // 填充月份数据
165新增: MonthSelect.Visibility = Visibility.Visible;
166新增:
167新增: MonthsList.SelectedItem = DateTime.Now.Month.ToString();
168新增: //MonthsList.SelectedItem = "1";
169新增:
170新增: for (int i = 1; i <= 12; i++)
171新增: {
172新增: MonthsList.Items.Add(i.ToString());
173新增: }
174新增:
175新增: MonthsList.SelectedItemChanged += DateChanged;
176新增:
177新增: }
178新增: }
179新增:
180新增: private void DateChanged(object sender, EventArgs e)
181新增: {
182新增: if (ShowType == DatePickerShowType.Day)
183新增: {
184新增: SelectedDate = new DateTime(int.Parse(YearsList.SelectedItem), int.Parse(MonthsList.SelectedItem), 1);
185新增: }
186新增: else
187新增: {
188新增: SelectedDate = new DateTime(int.Parse(YearsList.SelectedItem), 1, 1);
189新增: }
190新增: Render(SelectedDate);
191新增: }
95192
96193 private void AddItem(DateTime date)
97194 {
@@ -167,7 +264,7 @@ namespace UI.Controls.DatePickerBar
167264
168265
169266
170删除: private void Render()
267新增: private void Render(DateTime date)
171268 {
172269 if (Container == null)
173270 {
@@ -182,32 +279,34 @@ namespace UI.Controls.DatePickerBar
182279
183280 if (ShowType == DatePickerShowType.Day)
184281 {
185删除: dataCount = 41;
186删除:
187删除: // 前30天
188删除: for (int i = 1; i < 31; i++)
189删除: {
190删除: AddItem(DateTime.Now.Date.AddDays(-i));
191删除: }
282新增: dataCount = DateTime.DaysInMonth(date.Year, date.Month);
192283
193删除: AddItem(DateTime.Now.Date);
284新增: //// 前30天
285新增: //for (int i = 1; i < 31; i++)
286新增: //{
287新增: // AddItem(date.Date.AddDays(-i));
288新增: //}
194289
195删除: // 后十天
196删除: for (int i = 1; i < 11; i++)
290新增: //AddItem(date.Date);
291新增: for (int i = 1; i <= dataCount; i++)
197292 {
198删除: AddItem(DateTime.Now.Date.AddDays(+i));
293新增: AddItem(new DateTime(date.Year, date.Month, i));
199294 }
295新增: //// 后十天
296新增: //for (int i = 1; i < 11; i++)
297新增: //{
298新增: // AddItem(DateTime.Now.Date.AddDays(+i));
299新增: //}
200300 }
201301
202302 if (ShowType == DatePickerShowType.Month)
203303 {
204304 dataCount = 12;
205305
206删除: var nowDate = DateTime.Now;
207306 for (int i = 1; i < 13; i++)
208307 {
209删除: var date = new DateTime(nowDate.Year, i, 1);
210删除: AddMonthItem(date);
308新增: var data = new DateTime(date.Year, i, 1);
309新增: AddMonthItem(data);
211310 }
212311 }
213312
@@ -266,7 +365,7 @@ namespace UI.Controls.DatePickerBar
266365
267366 private void ScrollToActive(DateTime date)
268367 {
269删除:
368新增:
270369 if (ItemsDictionary.Count == 0)
271370 {
272371 return;
@@ -295,7 +394,7 @@ namespace UI.Controls.DatePickerBar
295394 SelectedDate = date;
296395 }
297396
298删除:
397新增:
299398 ItemsDictionary[date].IsSelected = true;
300399
301400
修改UI/Themes/DatePickerBar/DatePickerBar.xaml+110 −2看文件
@@ -1,7 +1,8 @@
11<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
22 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
33 xmlns:local="clr-namespace:UI.Controls.DatePickerBar"
4删除: xmlns:base="clr-namespace:UI.Controls.Base">
4新增: xmlns:base="clr-namespace:UI.Controls.Base"
5新增: xmlns:list="clr-namespace:UI.Controls.List">
56 <Style TargetType="{x:Type local:DatePickerBar}">
67 <Setter Property="SnapsToDevicePixels"
78 Value="true" />
@@ -12,7 +13,79 @@
1213 <ControlTemplate TargetType="{x:Type local:DatePickerBar}">
1314 <Border>
1415 <StackPanel>
15删除: <TextBlock Foreground="#5c5c5c" FontSize="15" Text="{TemplateBinding SelectedDateString}" HorizontalAlignment="Center" Margin="0,10"/>
16新增: <Grid x:Name="header">
17新增: <Border
18新增: x:Name="Date"
19新增: Background="Transparent"
20新增: Padding="5,10"
21新增: CornerRadius="12"
22新增: Margin="0,0,0,10"
23新增: HorizontalAlignment="Left"
24新增: ToolTip="选择">
25新增: <StackPanel Orientation="Horizontal" >
26新增: <base:Icon x:Name="DateIcon" Margin="0,0,5,0" IconType="DateTime" Foreground="Gray" VerticalAlignment="Center" HorizontalAlignment="Right"/>
27新增:
28新增: <TextBlock Foreground="#5c5c5c" FontSize="15" Text="{TemplateBinding SelectedDateString}" Margin="0,0" VerticalAlignment="Center" HorizontalAlignment="Left"/>
29新增: <base:Icon x:Name="PopupIcon" Width="25" Height="25" Margin="10,0,0,0" FontSize="10" IconType="ChevronDown" VerticalAlignment="Center" HorizontalAlignment="Right">
30新增: <base:Icon.RenderTransform>
31新增: <RotateTransform Angle="0" CenterX="12.5" CenterY="12.5"/>
32新增: </base:Icon.RenderTransform>
33新增: </base:Icon>
34新增: </StackPanel>
35新增:
36新增: </Border>
37新增: <Popup
38新增: x:Name="DatePickerPopup"
39新增: AllowsTransparency="True"
40新增: IsOpen="{TemplateBinding IsShowDatePickerPopup}"
41新增: Placement="Bottom"
42新增: PlacementTarget="{Binding ElementName=Date}"
43新增: PopupAnimation="Slide"
44新增: StaysOpen="False">
45新增: <Border
46新增: Background="White"
47新增: CornerRadius="12"
48新增: Padding="10"
49新增: Margin="10">
50新增: <Border.Effect>
51新增: <DropShadowEffect BlurRadius="10" ShadowDepth="0" Direction="0" Color="Gray" Opacity=".2"/>
52新增: </Border.Effect>
53新增:
54新增: <Grid>
55新增: <Path
56新增: Width="15"
57新增: Height="15"
58新增: SnapsToDevicePixels="False"
59新增: Data="M 0 15 L 7.5 7.5 L 15 15" Fill="White"
60新增: Stroke="White"
61新增: StrokeThickness="1"
62新增: VerticalAlignment="Top"
63新增: HorizontalAlignment="Left"
64新增: Margin="0,-25,0,0"
65新增: />
66新增: <StackPanel Orientation="Horizontal">
67新增: <!--<ScrollViewer x:Name="YearsListScrollViewer" CanContentScroll="True" VerticalScrollBarVisibility="Hidden">-->
68新增: <StackPanel >
69新增: <TextBlock Text="年份" HorizontalAlignment="Center"/>
70新增: <list:BaseList x:Name="YearsList" Height="120" Margin="0,5,0,0">
71新增:
72新增: </list:BaseList>
73新增: </StackPanel>
74新增: <StackPanel x:Name="MonthSelect" Margin="10,0,0,0" Visibility="Collapsed">
75新增: <TextBlock Text="月份" HorizontalAlignment="Center"/>
76新增: <list:BaseList x:Name="MonthsList" Height="120" Margin="0,5,0,0" HorizontalAlignment="Center">
77新增:
78新增: </list:BaseList>
79新增: </StackPanel>
80新增: <!--</ScrollViewer>-->
81新增:
82新增: </StackPanel>
83新增:
84新增: </Grid>
85新增:
86新增: </Border>
87新增: </Popup>
88新增: </Grid>
1689 <Grid>
1790 <Border Background="White" Padding="10" CornerRadius="10">
1891 <ScrollViewer x:Name="ScrollViewer" VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Hidden">
@@ -25,6 +98,41 @@
2598 </Border>
2699 </Grid>
27100 </StackPanel>
101新增:
102新增: <VisualStateManager.VisualStateGroups>
103新增: <VisualStateGroup x:Name="CommonStates">
104新增: <VisualStateGroup.Transitions>
105新增: <VisualTransition GeneratedDuration="0:0:0.18" />
106新增: <VisualTransition GeneratedDuration="0"
107新增: To="Pressed" />
108新增: </VisualStateGroup.Transitions>
109新增: <VisualState x:Name="Normal" />
110新增: <VisualState x:Name="DateMouseOver">
111新增: <Storyboard>
112新增: <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)"
113新增: Storyboard.TargetName="Date">
114新增: <EasingColorKeyFrame KeyTime="0"
115新增: Value="#192B20D9" />
116新增: </ColorAnimationUsingKeyFrames>
117新增: </Storyboard>
118新增: </VisualState>
119新增: <VisualState x:Name="ShowPopup">
120新增: <Storyboard>
121新增: <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(base:Icon.RenderTransform).(RotateTransform.Angle)"
122新增: Storyboard.TargetName="PopupIcon">
123新增: <EasingDoubleKeyFrame KeyTime="0"
124新增: Value="-180" />
125新增:
126新增: </DoubleAnimationUsingKeyFrames>
127新增: <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(base:Icon.Foreground).(SolidColorBrush.Color)"
128新增: Storyboard.TargetName="DateIcon">
129新增: <EasingColorKeyFrame KeyTime="0"
130新增: Value="#2b20d9" />
131新增: </ColorAnimationUsingKeyFrames>
132新增: </Storyboard>
133新增: </VisualState>
134新增: </VisualStateGroup>
135新增: </VisualStateManager.VisualStateGroups>
28136 </Border>
29137 <ControlTemplate.Triggers>
30138