diff --git a/demo/Ursa.Demo/Pages/TimePickerDemo.axaml b/demo/Ursa.Demo/Pages/TimePickerDemo.axaml
index 219e8e1..3e1b4c9 100644
--- a/demo/Ursa.Demo/Pages/TimePickerDemo.axaml
+++ b/demo/Ursa.Demo/Pages/TimePickerDemo.axaml
@@ -26,5 +26,6 @@
NeedConfirmation="True"
InnerLeftContent="时刻"
InnerRightContent="截止" />
+
diff --git a/src/Ursa.Themes.Semi/Controls/TextBox.axaml b/src/Ursa.Themes.Semi/Controls/TextBox.axaml
new file mode 100644
index 0000000..806a0e5
--- /dev/null
+++ b/src/Ursa.Themes.Semi/Controls/TextBox.axaml
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Ursa.Themes.Semi/Controls/TimePicker.axaml b/src/Ursa.Themes.Semi/Controls/TimePicker.axaml
index 779d93f..14c5b6b 100644
--- a/src/Ursa.Themes.Semi/Controls/TimePicker.axaml
+++ b/src/Ursa.Themes.Semi/Controls/TimePicker.axaml
@@ -38,8 +38,8 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Ursa.Themes.Semi/Controls/_index.axaml b/src/Ursa.Themes.Semi/Controls/_index.axaml
index 0ceb9e3..bf6acad 100644
--- a/src/Ursa.Themes.Semi/Controls/_index.axaml
+++ b/src/Ursa.Themes.Semi/Controls/_index.axaml
@@ -31,8 +31,10 @@
+
+
diff --git a/src/Ursa/Controls/DateTimePicker/TimePicker.cs b/src/Ursa/Controls/DateTimePicker/TimePicker.cs
index 25e0ff8..983e3d2 100644
--- a/src/Ursa/Controls/DateTimePicker/TimePicker.cs
+++ b/src/Ursa/Controls/DateTimePicker/TimePicker.cs
@@ -6,62 +6,29 @@ using Avalonia.Controls.Primitives;
using Avalonia.Data;
using Avalonia.Input;
using Avalonia.Interactivity;
+using Irihi.Avalonia.Shared.Common;
using Irihi.Avalonia.Shared.Contracts;
using Irihi.Avalonia.Shared.Helpers;
namespace Ursa.Controls;
[TemplatePart(PART_TextBox, typeof(TextBox))]
-[TemplatePart(PART_Popup, typeof(Popup))]
+[TemplatePart(PartNames.PART_Popup, typeof(Popup))]
[TemplatePart(PART_Presenter, typeof(TimePickerPresenter))]
[TemplatePart(PART_Button, typeof(Button))]
-public class TimePicker : TemplatedControl, IClearControl, IInnerContentControl, IPopupInnerContent
+public class TimePicker : TimePickerBase, IClearControl
{
public const string PART_TextBox = "PART_TextBox";
- public const string PART_Popup = "PART_Popup";
public const string PART_Presenter = "PART_Presenter";
public const string PART_Button = "PART_Button";
- public static readonly StyledProperty DisplayFormatProperty =
- AvaloniaProperty.Register(
- nameof(DisplayFormat), "HH:mm:ss");
-
- public static readonly StyledProperty PanelFormatProperty = AvaloniaProperty.Register(
- nameof(PanelFormat), "HH mm ss");
-
public static readonly StyledProperty SelectedTimeProperty =
AvaloniaProperty.Register(
- nameof(SelectedTime));
-
- public static readonly StyledProperty NeedConfirmationProperty = AvaloniaProperty.Register(
- nameof(NeedConfirmation));
-
- public static readonly StyledProperty