diff --git a/src/Snap.Hutao/.editorconfig b/src/Snap.Hutao/.editorconfig
index 7fb1d9f5..55caa86a 100644
--- a/src/Snap.Hutao/.editorconfig
+++ b/src/Snap.Hutao/.editorconfig
@@ -10,7 +10,7 @@ csharp_style_expression_bodied_constructors = false:silent
csharp_style_expression_bodied_operators = false:silent
csharp_style_expression_bodied_properties = false:silent
csharp_style_expression_bodied_indexers = false:silent
-csharp_style_expression_bodied_accessors = when_on_single_line:silent
+csharp_style_expression_bodied_accessors = when_on_single_line:suggestion
csharp_style_expression_bodied_lambdas = when_on_single_line:silent
csharp_style_expression_bodied_local_functions = false:silent
csharp_style_conditional_delegate_call = true:suggestion
diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Animation/AnimationDurations.cs b/src/Snap.Hutao/Snap.Hutao/Control/Animation/AnimationDurations.cs
new file mode 100644
index 00000000..2e025658
--- /dev/null
+++ b/src/Snap.Hutao/Snap.Hutao/Control/Animation/AnimationDurations.cs
@@ -0,0 +1,16 @@
+// Copyright (c) DGP Studio. All rights reserved.
+// Licensed under the MIT license.
+
+namespace Snap.Hutao.Control.Animation;
+
+///
+/// 动画时长
+///
+[HighQuality]
+internal static class AnimationDurations
+{
+ ///
+ /// 图片缩放动画
+ ///
+ public static readonly TimeSpan ImageZoom = TimeSpan.FromSeconds(0.5);
+}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Animation/ImageZoomInAnimation.cs b/src/Snap.Hutao/Snap.Hutao/Control/Animation/ImageZoomInAnimation.cs
index fee5136e..06df2ce0 100644
--- a/src/Snap.Hutao/Snap.Hutao/Control/Animation/ImageZoomInAnimation.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Control/Animation/ImageZoomInAnimation.cs
@@ -4,6 +4,7 @@
using CommunityToolkit.WinUI.UI;
using CommunityToolkit.WinUI.UI.Animations;
using Microsoft.UI.Composition;
+using System.Diagnostics.Contracts;
using System.Numerics;
namespace Snap.Hutao.Control.Animation;
@@ -11,17 +12,18 @@ namespace Snap.Hutao.Control.Animation;
///
/// 图片放大动画
///
-internal class ImageZoomInAnimation : ImplicitAnimation
+[HighQuality]
+internal sealed class ImageZoomInAnimation : ImplicitAnimation
{
///
/// 构造一个新的图片放大动画
///
public ImageZoomInAnimation()
{
+ Duration = AnimationDurations.ImageZoom;
EasingMode = Microsoft.UI.Xaml.Media.Animation.EasingMode.EaseOut;
EasingType = CommunityToolkit.WinUI.UI.Animations.EasingType.Circle;
- To = "1.1";
- Duration = TimeSpan.FromSeconds(0.5);
+ To = Core.StringLiterals.OnePointOne;
}
///
@@ -35,4 +37,4 @@ internal class ImageZoomInAnimation : ImplicitAnimation
{
return (To?.ToVector3(), From?.ToVector3());
}
-}
+}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Animation/ImageZoomOutAnimation.cs b/src/Snap.Hutao/Snap.Hutao/Control/Animation/ImageZoomOutAnimation.cs
index 468af39d..ecb59e66 100644
--- a/src/Snap.Hutao/Snap.Hutao/Control/Animation/ImageZoomOutAnimation.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Control/Animation/ImageZoomOutAnimation.cs
@@ -11,17 +11,18 @@ namespace Snap.Hutao.Control.Animation;
///
/// 图片缩小动画
///
-internal class ImageZoomOutAnimation : ImplicitAnimation
+[HighQuality]
+internal sealed class ImageZoomOutAnimation : ImplicitAnimation
{
///
/// 构造一个新的图片缩小动画
///
public ImageZoomOutAnimation()
{
+ Duration = AnimationDurations.ImageZoom;
EasingMode = Microsoft.UI.Xaml.Media.Animation.EasingMode.EaseOut;
EasingType = CommunityToolkit.WinUI.UI.Animations.EasingType.Circle;
- To = "1";
- Duration = TimeSpan.FromSeconds(0.5);
+ To = Core.StringLiterals.One;
}
///
diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Behavior/AutoHeightBehavior.cs b/src/Snap.Hutao/Snap.Hutao/Control/Behavior/AutoHeightBehavior.cs
index 047c68bd..1b30b9e9 100644
--- a/src/Snap.Hutao/Snap.Hutao/Control/Behavior/AutoHeightBehavior.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Control/Behavior/AutoHeightBehavior.cs
@@ -9,10 +9,11 @@ namespace Snap.Hutao.Control.Behavior;
///
/// 按给定比例自动调整高度的行为
///
-internal class AutoHeightBehavior : BehaviorBase
+[HighQuality]
+internal sealed class AutoHeightBehavior : BehaviorBase
{
- private static readonly DependencyProperty TargetWidthProperty = Property.Depend(nameof(TargetWidth), 1080D);
- private static readonly DependencyProperty TargetHeightProperty = Property.Depend(nameof(TargetHeight), 390D);
+ private static readonly DependencyProperty TargetWidthProperty = Property.DependBoxed(nameof(TargetWidth), BoxedValues.DoubleOne);
+ private static readonly DependencyProperty TargetHeightProperty = Property.DependBoxed(nameof(TargetHeight), BoxedValues.DoubleOne);
///
/// 目标宽度
@@ -35,7 +36,7 @@ internal class AutoHeightBehavior : BehaviorBase
///
protected override void OnAssociatedObjectLoaded()
{
- UpdateElementHeight();
+ UpdateElement();
AssociatedObject.SizeChanged += OnSizeChanged;
}
@@ -48,11 +49,11 @@ internal class AutoHeightBehavior : BehaviorBase
private void OnSizeChanged(object sender, SizeChangedEventArgs e)
{
- UpdateElementHeight();
+ UpdateElement();
}
- private void UpdateElementHeight()
+ private void UpdateElement()
{
AssociatedObject.Height = (double)AssociatedObject.ActualWidth * (TargetHeight / TargetWidth);
}
-}
+}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Behavior/AutoWidthBehavior.cs b/src/Snap.Hutao/Snap.Hutao/Control/Behavior/AutoWidthBehavior.cs
index 34a57a15..6837f71f 100644
--- a/src/Snap.Hutao/Snap.Hutao/Control/Behavior/AutoWidthBehavior.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Control/Behavior/AutoWidthBehavior.cs
@@ -9,7 +9,8 @@ namespace Snap.Hutao.Control.Behavior;
///
/// 按给定比例自动调整高度的行为
///
-internal class AutoWidthBehavior : BehaviorBase
+[HighQuality]
+internal sealed class AutoWidthBehavior : BehaviorBase
{
private static readonly DependencyProperty TargetWidthProperty = Property.Depend(nameof(TargetWidth), 320D);
private static readonly DependencyProperty TargetHeightProperty = Property.Depend(nameof(TargetHeight), 1024D);
@@ -35,7 +36,7 @@ internal class AutoWidthBehavior : BehaviorBase
///
protected override void OnAssociatedObjectLoaded()
{
- UpdateElementWidth();
+ UpdateElement();
AssociatedObject.SizeChanged += OnSizeChanged;
}
@@ -48,10 +49,10 @@ internal class AutoWidthBehavior : BehaviorBase
private void OnSizeChanged(object sender, SizeChangedEventArgs e)
{
- UpdateElementWidth();
+ UpdateElement();
}
- private void UpdateElementWidth()
+ private void UpdateElement()
{
AssociatedObject.Width = (double)AssociatedObject.Height * (TargetWidth / TargetHeight);
}
diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Behavior/ComboBoxExtendsContentIntoTitleBarWorkaroundBehavior.cs b/src/Snap.Hutao/Snap.Hutao/Control/Behavior/ComboBoxExtendsContentIntoTitleBarWorkaroundBehavior.cs
index eff38f95..39ceb65a 100644
--- a/src/Snap.Hutao/Snap.Hutao/Control/Behavior/ComboBoxExtendsContentIntoTitleBarWorkaroundBehavior.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Control/Behavior/ComboBoxExtendsContentIntoTitleBarWorkaroundBehavior.cs
@@ -11,7 +11,7 @@ namespace Snap.Hutao.Control.Behavior;
/// AppTitleBar Workaround
/// https://github.com/microsoft/microsoft-ui-xaml/issues/7756
///
-internal class ComboBoxExtendsContentIntoTitleBarWorkaroundBehavior : BehaviorBase
+internal sealed class ComboBoxExtendsContentIntoTitleBarWorkaroundBehavior : BehaviorBase
{
private readonly IMessenger messenger;
diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Behavior/InvokeCommandOnLoadedBehavior.cs b/src/Snap.Hutao/Snap.Hutao/Control/Behavior/InvokeCommandOnLoadedBehavior.cs
index 4a274f26..33c61d85 100644
--- a/src/Snap.Hutao/Snap.Hutao/Control/Behavior/InvokeCommandOnLoadedBehavior.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Control/Behavior/InvokeCommandOnLoadedBehavior.cs
@@ -9,7 +9,8 @@ namespace Snap.Hutao.Control.Behavior;
///
/// 在元素加载完成后执行命令的行为
///
-internal class InvokeCommandOnLoadedBehavior : BehaviorBase
+[HighQuality]
+internal sealed class InvokeCommandOnLoadedBehavior : BehaviorBase
{
private static readonly DependencyProperty CommandProperty = Property.Depend(nameof(Command));
private static readonly DependencyProperty CommandParameterProperty = Property.Depend