mirror of
https://github.com/AtomUI/AtomUI.git
synced 2026-10-26 03:00:28 +08:00
Refactor DatePickerTheme
This commit is contained in:
@@ -25,5 +25,4 @@
|
||||
<ProjectReference Include="../AtomUI.Theme/AtomUI.Theme.csproj" />
|
||||
<ProjectReference Include="../AtomUI.Generator/AtomUI.Generator.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" PrivateAssets="all" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -21,7 +21,7 @@ public class DateSelectedEventArgs : EventArgs
|
||||
}
|
||||
}
|
||||
|
||||
[TemplatePart(DatePickerCalendarThemeConstants.CalendarItemPart, typeof(CalendarItem))]
|
||||
[TemplatePart(CalendarThemeConstants.CalendarItemPart, typeof(CalendarItem))]
|
||||
internal class Calendar : TemplatedControl
|
||||
{
|
||||
internal const int RowsPerMonth = 7;
|
||||
@@ -1431,7 +1431,7 @@ internal class Calendar : TemplatedControl
|
||||
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
|
||||
{
|
||||
base.OnApplyTemplate(e);
|
||||
CalendarItem = e.NameScope.Find<CalendarItem>(DatePickerCalendarThemeConstants.CalendarItemPart);
|
||||
CalendarItem = e.NameScope.Find<CalendarItem>(CalendarThemeConstants.CalendarItemPart);
|
||||
|
||||
if (SelectedDate is not null)
|
||||
{
|
||||
|
||||
@@ -115,7 +115,7 @@ internal sealed class CalendarButton : AvaloniaButton
|
||||
protected override void OnAttachedToLogicalTree(LogicalTreeAttachmentEventArgs e)
|
||||
{
|
||||
base.OnAttachedToLogicalTree(e);
|
||||
ConfigureTransitions();
|
||||
SetupTransitions();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -128,7 +128,7 @@ internal sealed class CalendarButton : AvaloniaButton
|
||||
UpdatePseudoClasses();
|
||||
}
|
||||
|
||||
private void ConfigureTransitions()
|
||||
private void SetupTransitions()
|
||||
{
|
||||
if (IsMotionEnabled)
|
||||
{
|
||||
@@ -229,7 +229,7 @@ internal sealed class CalendarButton : AvaloniaButton
|
||||
{
|
||||
if (change.Property == IsMotionEnabledProperty)
|
||||
{
|
||||
ConfigureTransitions();
|
||||
SetupTransitions();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -195,7 +195,7 @@ internal sealed class CalendarDayButton : AvaloniaButton,
|
||||
UpdatePseudoClasses();
|
||||
}
|
||||
|
||||
private void ConfigureTransitions()
|
||||
private void SetupTransitions()
|
||||
{
|
||||
if (IsMotionEnabled)
|
||||
{
|
||||
@@ -301,7 +301,7 @@ internal sealed class CalendarDayButton : AvaloniaButton,
|
||||
{
|
||||
base.OnAttachedToLogicalTree(e);
|
||||
_resourceBindingsDisposable = new CompositeDisposable();
|
||||
ConfigureTransitions();
|
||||
SetupTransitions();
|
||||
}
|
||||
|
||||
protected override void OnDetachedFromLogicalTree(LogicalTreeAttachmentEventArgs e)
|
||||
@@ -325,7 +325,7 @@ internal sealed class CalendarDayButton : AvaloniaButton,
|
||||
{
|
||||
if (change.Property == IsMotionEnabledProperty)
|
||||
{
|
||||
ConfigureTransitions();
|
||||
SetupTransitions();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -342,7 +342,7 @@ internal class CalendarItem : TemplatedControl,
|
||||
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
|
||||
{
|
||||
base.OnApplyTemplate(e);
|
||||
HeaderButton = e.NameScope.Get<HeadTextButton>(CalendarItemThemeConstants.HeaderButtonPart);
|
||||
HeaderButton = e.NameScope.Get<HeadTextButton>(CalendarItemThemeConstants.HeaderButtonPart);
|
||||
PreviousButton = e.NameScope.Get<IconButton>(CalendarItemThemeConstants.PreviousButtonPart);
|
||||
PreviousMonthButton =
|
||||
e.NameScope.Get<IconButton>(CalendarItemThemeConstants.PreviousMonthButtonPart);
|
||||
|
||||
@@ -4,6 +4,8 @@ namespace AtomUI.Controls.CalendarView;
|
||||
|
||||
internal class DualMonthRangeCalendar : RangeCalendar
|
||||
{
|
||||
protected override Type StyleKeyOverride => typeof(DualMonthRangeCalendar);
|
||||
|
||||
internal override void ResetStates()
|
||||
{
|
||||
base.ResetStates();
|
||||
|
||||
@@ -20,6 +20,8 @@ public class RangeDateSelectedEventArgs : EventArgs
|
||||
|
||||
internal class RangeCalendar : Calendar
|
||||
{
|
||||
protected override Type StyleKeyOverride => typeof(RangeCalendar);
|
||||
|
||||
#region 公共属性定义
|
||||
|
||||
public static readonly StyledProperty<DateTime?> SecondarySelectedDateProperty =
|
||||
|
||||
@@ -256,13 +256,13 @@ public class DatePicker : InfoPickerInput,
|
||||
{
|
||||
SelectedDateTime = DefaultDateTime;
|
||||
}
|
||||
|
||||
Text = FormatDateTime(SelectedDateTime);
|
||||
|
||||
if (InfoIcon is null)
|
||||
{
|
||||
SetValue(InfoIconProperty, AntDesignIconPackage.CalendarOutlined(), BindingPriority.Template);
|
||||
}
|
||||
|
||||
Text = FormatDateTime(SelectedDateTime);
|
||||
}
|
||||
|
||||
protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs change)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using Avalonia.Controls;
|
||||
using AtomUI.Controls.Themes;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Controls.Primitives;
|
||||
|
||||
namespace AtomUI.Controls;
|
||||
@@ -12,6 +13,6 @@ internal class DatePickerFlyoutPresenter : FlyoutPresenter
|
||||
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
|
||||
{
|
||||
base.OnApplyTemplate(e);
|
||||
DatePickerPresenter = e.NameScope.Get<DatePickerPresenter>(DatePickerFlyoutPresenterTheme.DatePickerPresenterPart);
|
||||
DatePickerPresenter = e.NameScope.Get<DatePickerPresenter>(DatePickerFlyoutPresenterThemeConstants.DatePickerPresenterPart);
|
||||
}
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
using AtomUI.Theme.Styling;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Controls.Templates;
|
||||
|
||||
namespace AtomUI.Controls;
|
||||
|
||||
[ControlThemeProvider]
|
||||
internal class DatePickerFlyoutPresenterTheme : ArrowDecoratedBoxTheme
|
||||
{
|
||||
public const string DatePickerPresenterPart = "PART_DatePickerPresenter";
|
||||
|
||||
public DatePickerFlyoutPresenterTheme()
|
||||
: this(typeof(DatePickerFlyoutPresenter))
|
||||
{
|
||||
}
|
||||
|
||||
protected DatePickerFlyoutPresenterTheme(Type targetType) : base(targetType)
|
||||
{
|
||||
}
|
||||
|
||||
protected override Control BuildContent(INameScope scope)
|
||||
{
|
||||
var datePickerPresenter = new DatePickerPresenter()
|
||||
{
|
||||
Name = DatePickerPresenterPart,
|
||||
};
|
||||
datePickerPresenter.RegisterInNameScope(scope);
|
||||
return datePickerPresenter;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
using System.Reactive.Disposables;
|
||||
using AtomUI.Controls.CalendarView;
|
||||
using AtomUI.Controls.Themes;
|
||||
using AtomUI.Theme;
|
||||
using AtomUI.Theme.Data;
|
||||
using AtomUI.Theme.Styling;
|
||||
@@ -194,11 +195,11 @@ internal class DatePickerPresenter : PickerPresenterBase,
|
||||
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
|
||||
{
|
||||
base.OnApplyTemplate(e);
|
||||
_nowButton = e.NameScope.Get<Button>(DatePickerPresenterTheme.NowButtonPart);
|
||||
_todayButton = e.NameScope.Get<Button>(DatePickerPresenterTheme.TodayButtonPart);
|
||||
_confirmButton = e.NameScope.Get<Button>(DatePickerPresenterTheme.ConfirmButtonPart);
|
||||
_calendarView = e.NameScope.Get<PickerCalendar>(DatePickerPresenterTheme.CalendarViewPart);
|
||||
_timeView = e.NameScope.Find<TimeView>(DatePickerPresenterTheme.TimeViewPart);
|
||||
_nowButton = e.NameScope.Get<Button>(DatePickerPresenterThemeConstants.NowButtonPart);
|
||||
_todayButton = e.NameScope.Get<Button>(DatePickerPresenterThemeConstants.TodayButtonPart);
|
||||
_confirmButton = e.NameScope.Get<Button>(DatePickerPresenterThemeConstants.ConfirmButtonPart);
|
||||
_calendarView = e.NameScope.Get<PickerCalendar>(DatePickerPresenterThemeConstants.CalendarViewPart);
|
||||
_timeView = e.NameScope.Find<TimeView>(DatePickerPresenterThemeConstants.TimeViewPart);
|
||||
SetupButtonStatus();
|
||||
if (_calendarView is not null)
|
||||
{
|
||||
|
||||
@@ -1,147 +0,0 @@
|
||||
using AtomUI.Controls.DatePickerLang;
|
||||
using AtomUI.Controls.Localization;
|
||||
using AtomUI.Theme;
|
||||
using AtomUI.Theme.Data;
|
||||
using AtomUI.Theme.Styling;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Controls.Templates;
|
||||
using Avalonia.Layout;
|
||||
using Avalonia.Styling;
|
||||
using PickerCalendar = AtomUI.Controls.CalendarView.Calendar;
|
||||
|
||||
namespace AtomUI.Controls;
|
||||
|
||||
[ControlThemeProvider]
|
||||
internal class DatePickerPresenterTheme : BaseControlTheme
|
||||
{
|
||||
public const string MainLayoutPart = "PART_MainLayout";
|
||||
public const string NowButtonPart = "PART_NowButton";
|
||||
public const string TodayButtonPart = "PART_TodayButton";
|
||||
public const string ConfirmButtonPart = "PART_ConfirmButton";
|
||||
public const string ButtonsLayoutPart = "PART_ButtonsLayout";
|
||||
public const string ButtonsFramePart = "PART_ButtonsFrame";
|
||||
public const string CalendarViewPart = "PART_CalendarView";
|
||||
public const string TimeViewPart = "PART_TimeView";
|
||||
|
||||
public DatePickerPresenterTheme() : this(typeof(DatePickerPresenter))
|
||||
{
|
||||
}
|
||||
|
||||
public DatePickerPresenterTheme(Type targetType) : base(targetType)
|
||||
{
|
||||
}
|
||||
|
||||
protected override IControlTemplate BuildControlTemplate()
|
||||
{
|
||||
return new FuncControlTemplate<DatePickerPresenter>((presenter, scope) =>
|
||||
{
|
||||
var mainLayout = new DockPanel()
|
||||
{
|
||||
Name = MainLayoutPart,
|
||||
LastChildFill = true
|
||||
};
|
||||
|
||||
var calendarView = BuildCalendarView(presenter, scope);
|
||||
|
||||
var buttonsContainerFrame = new Border()
|
||||
{
|
||||
Name = ButtonsFramePart
|
||||
};
|
||||
CreateTemplateParentBinding(buttonsContainerFrame, Border.BorderThicknessProperty, DatePickerPresenter.BorderThicknessProperty);
|
||||
var buttonsPanel = BuildButtons(presenter, scope);
|
||||
CreateTemplateParentBinding(buttonsContainerFrame, Border.IsVisibleProperty, DatePickerPresenter.ButtonsPanelVisibleProperty);
|
||||
buttonsContainerFrame.Child = buttonsPanel;
|
||||
|
||||
DockPanel.SetDock(buttonsContainerFrame, Dock.Bottom);
|
||||
mainLayout.Children.Add(buttonsContainerFrame);
|
||||
mainLayout.Children.Add(calendarView);
|
||||
return mainLayout;
|
||||
});
|
||||
}
|
||||
|
||||
protected virtual Control BuildCalendarView(DatePickerPresenter presenter, INameScope scope)
|
||||
{
|
||||
var calendarLayout = new StackPanel()
|
||||
{
|
||||
Orientation = Orientation.Horizontal
|
||||
};
|
||||
var calendarView = new PickerCalendar()
|
||||
{
|
||||
Name = CalendarViewPart,
|
||||
};
|
||||
CreateTemplateParentBinding(calendarView, PickerCalendar.SelectedDateProperty, DatePickerPresenter.SelectedDateTimeProperty);
|
||||
CreateTemplateParentBinding(calendarView, PickerCalendar.IsMotionEnabledProperty, DatePickerPresenter.IsMotionEnabledProperty);
|
||||
calendarView.RegisterInNameScope(scope);
|
||||
calendarLayout.Children.Add(calendarView);
|
||||
|
||||
var timeView = new TimeView()
|
||||
{
|
||||
Name = TimeViewPart,
|
||||
VerticalAlignment = VerticalAlignment.Top,
|
||||
};
|
||||
CreateTemplateParentBinding(timeView, TimeView.ClockIdentifierProperty, DatePickerPresenter.ClockIdentifierProperty);
|
||||
CreateTemplateParentBinding(timeView, TimeView.IsVisibleProperty, DatePickerPresenter.IsShowTimeProperty);
|
||||
timeView.RegisterInNameScope(scope);
|
||||
calendarLayout.Children.Add(timeView);
|
||||
|
||||
return calendarLayout;
|
||||
}
|
||||
|
||||
protected virtual Panel BuildButtons(DatePickerPresenter presenter, INameScope scope)
|
||||
{
|
||||
var buttonsPanel = new Panel()
|
||||
{
|
||||
Name = ButtonsLayoutPart
|
||||
};
|
||||
|
||||
var nowButton = new Button
|
||||
{
|
||||
ButtonType = ButtonType.Link,
|
||||
Name = NowButtonPart,
|
||||
HorizontalAlignment = HorizontalAlignment.Left,
|
||||
SizeType = SizeType.Small
|
||||
};
|
||||
LanguageResourceBinder.CreateBinding(nowButton, Button.ContentProperty, DatePickerLangResourceKey.Now);
|
||||
nowButton.RegisterInNameScope(scope);
|
||||
buttonsPanel.Children.Add(nowButton);
|
||||
|
||||
var todayButton = new Button
|
||||
{
|
||||
ButtonType = ButtonType.Link,
|
||||
Name = TodayButtonPart,
|
||||
HorizontalAlignment = HorizontalAlignment.Left,
|
||||
SizeType = SizeType.Small
|
||||
};
|
||||
LanguageResourceBinder.CreateBinding(todayButton, Button.ContentProperty, DatePickerLangResourceKey.Today);
|
||||
todayButton.RegisterInNameScope(scope);
|
||||
buttonsPanel.Children.Add(todayButton);
|
||||
|
||||
var confirmButton = new Button
|
||||
{
|
||||
Name = ConfirmButtonPart,
|
||||
ButtonType = ButtonType.Primary,
|
||||
SizeType = SizeType.Small,
|
||||
HorizontalAlignment = HorizontalAlignment.Right
|
||||
};
|
||||
LanguageResourceBinder.CreateBinding(confirmButton, Button.ContentProperty, CommonLangResourceKey.OkText);
|
||||
confirmButton.RegisterInNameScope(scope);
|
||||
buttonsPanel.Children.Add(confirmButton);
|
||||
|
||||
return buttonsPanel;
|
||||
}
|
||||
|
||||
protected override void BuildStyles()
|
||||
{
|
||||
var buttonsFrameStyle = new Style(selector => selector.Nesting().Template().Name(ButtonsFramePart));
|
||||
buttonsFrameStyle.Add(Border.BorderBrushProperty, SharedTokenKey.ColorBorderSecondary);
|
||||
Add(buttonsFrameStyle);
|
||||
|
||||
var buttonsPanelStyle = new Style(selector => selector.Nesting().Template().Name(ButtonsLayoutPart));
|
||||
buttonsPanelStyle.Add(Panel.MarginProperty, DatePickerTokenKey.ButtonsPanelMargin);
|
||||
Add(buttonsPanelStyle);
|
||||
|
||||
var timeViewStyle = new Style(selector => selector.Nesting().Template().Name(TimeViewPart));
|
||||
timeViewStyle.Add(TimePicker.PaddingProperty, DatePickerTokenKey.PanelContentPadding);
|
||||
Add(timeViewStyle);
|
||||
}
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
using AtomUI.Controls.CalendarView;
|
||||
using AtomUI.Theme.Styling;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Controls.Templates;
|
||||
|
||||
namespace AtomUI.Controls;
|
||||
|
||||
[ControlThemeProvider]
|
||||
internal class DualMonthRangeDatePickerPresenterTheme : DatePickerPresenterTheme
|
||||
{
|
||||
public DualMonthRangeDatePickerPresenterTheme() : this(typeof(DualMonthRangeDatePickerPresenter))
|
||||
{
|
||||
}
|
||||
|
||||
public DualMonthRangeDatePickerPresenterTheme(Type targetType) : base(targetType)
|
||||
{
|
||||
}
|
||||
|
||||
protected override Control BuildCalendarView(DatePickerPresenter presenter, INameScope scope)
|
||||
{
|
||||
var calendarView = new DualMonthRangeCalendar()
|
||||
{
|
||||
Name = CalendarViewPart,
|
||||
};
|
||||
CreateTemplateParentBinding(calendarView, DualMonthRangeCalendar.IsMotionEnabledProperty, DualMonthRangeDatePickerPresenter.IsMotionEnabledProperty);
|
||||
CreateTemplateParentBinding(calendarView, DualMonthRangeCalendar.SelectedDateProperty, DualMonthRangeDatePickerPresenter.SelectedDateTimeProperty);
|
||||
CreateTemplateParentBinding(calendarView, DualMonthRangeCalendar.SecondarySelectedDateProperty, DualMonthRangeDatePickerPresenter.SecondarySelectedDateTimeProperty);
|
||||
calendarView.RegisterInNameScope(scope);
|
||||
return calendarView;
|
||||
}
|
||||
}
|
||||
@@ -559,11 +559,9 @@ public class RangeDatePicker : RangeInfoPickerInput,
|
||||
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
|
||||
{
|
||||
base.OnApplyTemplate(e);
|
||||
|
||||
if (InfoIcon is null)
|
||||
{
|
||||
SetValue(InfoIconProperty, AntDesignIconPackage.CalendarOutlined(), BindingPriority.Template);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
using AtomUI.Theme.Styling;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Controls.Templates;
|
||||
|
||||
namespace AtomUI.Controls;
|
||||
|
||||
[ControlThemeProvider]
|
||||
internal class RangeDatePickerFlyoutPresenterTheme : ArrowDecoratedBoxTheme
|
||||
{
|
||||
public const string PickerPresenterContentPart = "PART_PickerPresenterContent";
|
||||
|
||||
public RangeDatePickerFlyoutPresenterTheme()
|
||||
: this(typeof(RangeDatePickerFlyoutPresenter))
|
||||
{
|
||||
}
|
||||
|
||||
protected RangeDatePickerFlyoutPresenterTheme(Type targetType) : base(targetType)
|
||||
{
|
||||
}
|
||||
|
||||
protected override Control BuildContent(INameScope scope)
|
||||
{
|
||||
var datePickerPresenter = new RangeDatePickerPresenter()
|
||||
{
|
||||
Name = PickerPresenterContentPart,
|
||||
};
|
||||
datePickerPresenter.RegisterInNameScope(scope);
|
||||
return datePickerPresenter;
|
||||
}
|
||||
}
|
||||
@@ -3,9 +3,11 @@
|
||||
xmlns:atom="https://atomui.net"
|
||||
xmlns:calendarview="using:AtomUI.Controls.CalendarView"
|
||||
xmlns:datePickerLang="using:AtomUI.Controls.DatePickerLang"
|
||||
xmlns:localization="clr-namespace:AtomUI.Controls.Localization"
|
||||
x:Class="AtomUI.Controls.Themes.DatePickerPresenterTheme"
|
||||
TargetType="atom:DatePickerPresenter">
|
||||
<Setter Property="Template">
|
||||
<ControlTemplate>
|
||||
<ControlTemplate TargetType="atom:DatePickerPresenter">
|
||||
<DockPanel Name="{x:Static atom:DatePickerPresenterThemeConstants.MainLayoutPart}"
|
||||
LastChildFill="True">
|
||||
<Border Name="{x:Static atom:DatePickerPresenterThemeConstants.ButtonsFramePart}"
|
||||
@@ -30,7 +32,7 @@
|
||||
ButtonType="Primary"
|
||||
HorizontalAlignment="Right"
|
||||
SizeType="Small"
|
||||
Content="{DynamicResource {x:Static datePickerLang:DatePickerLangResourceKey.Today}}" />
|
||||
Content="{DynamicResource {x:Static localization:CommonLangResourceKey.OkText}}" />
|
||||
</Panel>
|
||||
</Border>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
@@ -40,6 +42,7 @@
|
||||
IsMotionEnabled="{TemplateBinding IsMotionEnabled}" />
|
||||
<atom:TimeView Name="{x:Static atom:DatePickerPresenterThemeConstants.TimeViewPart}"
|
||||
VerticalAlignment="Top"
|
||||
IsMotionEnabled="{TemplateBinding IsMotionEnabled}"
|
||||
ClockIdentifier="{TemplateBinding ClockIdentifier}"
|
||||
IsVisible="{TemplateBinding IsShowTime}" />
|
||||
</StackPanel>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<ResourceDictionary xmlns="https://github.com/avaloniaui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:atom="https://atomui.net"
|
||||
xmlns:themes="using:AtomUI.Controls.Themes"
|
||||
xmlns:calendarview="using:AtomUI.Controls.CalendarView">
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
@@ -9,15 +10,15 @@
|
||||
<ResourceInclude Source="CalendarView/DualMonthRangeCalendarTheme.axaml"/>
|
||||
<ResourceInclude Source="CalendarView/DualMonthCalendarItemTheme.axaml"/>
|
||||
|
||||
<!-- <ResourceInclude Source="CalendarView/DualMonthCalendarItemTheme.axaml"/> -->
|
||||
<!-- <ResourceInclude Source="CalendarView/RangeCalendarTheme.axaml"/> -->
|
||||
<!-- <ResourceInclude Source="DatePickerFlyoutPresenterTheme.axaml"/> -->
|
||||
<!-- <ResourceInclude Source="DualMonthRangeDatePickerPresenterTheme.axaml"/> -->
|
||||
<!-- <ResourceInclude Source="RangeDatePickerFlyoutPresenterTheme.axaml"/> -->
|
||||
<!-- <ResourceInclude Source="TimedRangeDatePickerPresenterTheme.axaml"/> -->
|
||||
<ResourceInclude Source="DatePickerFlyoutPresenterTheme.axaml"/>
|
||||
<ResourceInclude Source="DualMonthRangeDatePickerPresenterTheme.axaml"/>
|
||||
<ResourceInclude Source="RangeDatePickerFlyoutPresenterTheme.axaml"/>
|
||||
<ResourceInclude Source="TimedRangeDatePickerPresenterTheme.axaml"/>
|
||||
<ResourceInclude Source="DatePickerTheme.axaml"/>
|
||||
<ResourceInclude Source="RangeDatePickerTheme.axaml"/>
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
|
||||
<themes:CalendarTheme x:Key="{x:Type calendarview:Calendar}" TargetType="calendarview:Calendar"/>
|
||||
<themes:CalendarItemTheme x:Key="{x:Type calendarview:CalendarItem}" TargetType="calendarview:CalendarItem"/>
|
||||
<themes:DatePickerPresenterTheme x:Key="{x:Type atom:DatePickerPresenter}" TargetType="atom:DatePickerPresenter"/>
|
||||
</ResourceDictionary>
|
||||
@@ -4,7 +4,8 @@
|
||||
xmlns:themes="using:AtomUI.Controls.Themes"
|
||||
xmlns:atom="https://atomui.net"
|
||||
xmlns:calendarview="using:AtomUI.Controls.CalendarView"
|
||||
xmlns:datePickerLang="using:AtomUI.Controls.DatePickerLang">
|
||||
xmlns:datePickerLang="using:AtomUI.Controls.DatePickerLang"
|
||||
xmlns:localization="clr-namespace:AtomUI.Controls.Localization">
|
||||
<ControlTheme x:Key="{x:Type atom:DualMonthRangeDatePickerPresenter}"
|
||||
TargetType="atom:DualMonthRangeDatePickerPresenter">
|
||||
<ControlTheme.BasedOn>
|
||||
@@ -36,7 +37,7 @@
|
||||
ButtonType="Primary"
|
||||
HorizontalAlignment="Right"
|
||||
SizeType="Small"
|
||||
Content="{DynamicResource {x:Static datePickerLang:DatePickerLangResourceKey.Today}}" />
|
||||
Content="{DynamicResource {x:Static localization:CommonLangResourceKey.OkText}}" />
|
||||
</Panel>
|
||||
</Border>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
|
||||
@@ -4,7 +4,8 @@
|
||||
xmlns:atom="https://atomui.net"
|
||||
xmlns:themes="using:AtomUI.Controls.Themes"
|
||||
xmlns:calendarview="using:AtomUI.Controls.CalendarView"
|
||||
xmlns:datePickerLang="using:AtomUI.Controls.DatePickerLang">
|
||||
xmlns:datePickerLang="using:AtomUI.Controls.DatePickerLang"
|
||||
xmlns:localization="clr-namespace:AtomUI.Controls.Localization">
|
||||
<ControlTheme x:Key="{x:Type atom:TimedRangeDatePickerPresenter}"
|
||||
TargetType="atom:TimedRangeDatePickerPresenter">
|
||||
<ControlTheme.BasedOn>
|
||||
@@ -36,7 +37,7 @@
|
||||
ButtonType="Primary"
|
||||
HorizontalAlignment="Right"
|
||||
SizeType="Small"
|
||||
Content="{DynamicResource {x:Static datePickerLang:DatePickerLangResourceKey.Today}}" />
|
||||
Content="{DynamicResource {x:Static localization:CommonLangResourceKey.OkText}}" />
|
||||
</Panel>
|
||||
</Border>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
|
||||
-4
@@ -17,11 +17,8 @@ namespace AtomUI.Theme
|
||||
themes.Add(new AtomUI.Controls.CircleProgressTheme());
|
||||
themes.Add(new AtomUI.Controls.ContextMenuTheme());
|
||||
themes.Add(new AtomUI.Controls.DashboardProgressTheme());
|
||||
themes.Add(new AtomUI.Controls.DatePickerFlyoutPresenterTheme());
|
||||
themes.Add(new AtomUI.Controls.DatePickerPresenterTheme());
|
||||
themes.Add(new AtomUI.Controls.DrawerContainerTheme());
|
||||
themes.Add(new AtomUI.Controls.DrawerInfoContainerTheme());
|
||||
themes.Add(new AtomUI.Controls.DualMonthRangeDatePickerPresenterTheme());
|
||||
themes.Add(new AtomUI.Controls.EmptyIndicatorTheme());
|
||||
themes.Add(new AtomUI.Controls.ExpanderTheme());
|
||||
themes.Add(new AtomUI.Controls.GroupBoxTheme());
|
||||
@@ -44,7 +41,6 @@ namespace AtomUI.Theme
|
||||
themes.Add(new AtomUI.Controls.OptionButtonGroupTheme());
|
||||
themes.Add(new AtomUI.Controls.OptionButtonTheme());
|
||||
themes.Add(new AtomUI.Controls.ProgressBarTheme());
|
||||
themes.Add(new AtomUI.Controls.RangeDatePickerFlyoutPresenterTheme());
|
||||
themes.Add(new AtomUI.Controls.SegmentedItemTheme());
|
||||
themes.Add(new AtomUI.Controls.SegmentedTheme());
|
||||
themes.Add(new AtomUI.Controls.SeparatorTheme());
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
EmbedMode="True"
|
||||
IsEnableClearButton="False"
|
||||
IsEnableRevealButton="False"
|
||||
Width="{TemplateBinding PreferredInputWidth}"
|
||||
DataValidationErrors.Errors="{TemplateBinding DataValidationErrors.Errors}"
|
||||
Foreground="{TemplateBinding InputTextBrush}"
|
||||
SizeType="{TemplateBinding SizeType}"
|
||||
@@ -69,6 +70,7 @@
|
||||
EmbedMode="True"
|
||||
IsEnableClearButton="False"
|
||||
IsEnableRevealButton="False"
|
||||
Width="{TemplateBinding PreferredInputWidth}"
|
||||
DataValidationErrors.Errors="{TemplateBinding DataValidationErrors.Errors}"
|
||||
Foreground="{TemplateBinding InputTextBrush}"
|
||||
SizeType="{TemplateBinding SizeType}"
|
||||
|
||||
@@ -311,8 +311,7 @@ internal class DateTimePickerPanel : Panel,
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
children.MoveRange(0, numCountsToMove, children.Count);
|
||||
children.MoveRange(0, numCountsToMove, children.Count - 1);
|
||||
|
||||
var scrollHeight = _extent.Height - Viewport.Height;
|
||||
if (ShouldLoop && value.Y >= scrollHeight - _extentOne)
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
|
||||
<Setter Property="ItemHeight" Value="{DynamicResource {x:Static atom:TimePickerTokenKey.ItemHeight}}" />
|
||||
|
||||
<Style Selector="^ /template/ atom|TextBlock#HeaderTextPart">
|
||||
<Style Selector="^ /template/ atom|TextBlock#PART_HeaderText">
|
||||
<Setter Property="Height" Value="{DynamicResource {x:Static atom:TimePickerTokenKey.ItemHeight}}" />
|
||||
<Setter Property="HorizontalAlignment" Value="Center" />
|
||||
<Setter Property="VerticalAlignment" Value="Center" />
|
||||
|
||||
Reference in New Issue
Block a user