From 602b31c52da04765abc9c8e1bd0d03496b3d8eca Mon Sep 17 00:00:00 2001 From: Lightczx <1686188646@qq.com> Date: Fri, 24 Nov 2023 11:51:46 +0800 Subject: [PATCH] restrict combobox size --- .../Control/SizeRestrictedContentControl.cs | 47 +++++++++++++++++++ .../Model/Intrinsic/Frozen/IntrinsicFrozen.cs | 14 +++--- .../Snap.Hutao/Resource/Localization/SH.resx | 3 ++ .../Snap.Hutao/View/Card/LaunchGameCard.xaml | 21 +++++---- .../View/Control/DescParamComboBox.xaml | 13 +++-- .../Snap.Hutao/View/Page/AchievementPage.xaml | 15 +++--- .../Snap.Hutao/View/Page/CultivationPage.xaml | 16 ++++--- .../Snap.Hutao/View/Page/GachaLogPage.xaml | 15 +++--- .../Snap.Hutao/View/Page/LaunchGamePage.xaml | 42 +++++++++-------- .../Snap.Hutao/View/Page/SettingPage.xaml | 35 ++++++++------ .../Snap.Hutao/View/Page/TestPage.xaml | 13 ++--- 11 files changed, 152 insertions(+), 82 deletions(-) create mode 100644 src/Snap.Hutao/Snap.Hutao/Control/SizeRestrictedContentControl.cs diff --git a/src/Snap.Hutao/Snap.Hutao/Control/SizeRestrictedContentControl.cs b/src/Snap.Hutao/Snap.Hutao/Control/SizeRestrictedContentControl.cs new file mode 100644 index 00000000..48e89b61 --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Control/SizeRestrictedContentControl.cs @@ -0,0 +1,47 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; +using Windows.Foundation; + +namespace Snap.Hutao.Control; + +[DependencyProperty("IsWidthRestricted", typeof(bool), true)] +[DependencyProperty("IsHeightRestricted", typeof(bool), true)] +internal sealed partial class SizeRestrictedContentControl : ContentControl +{ + private double minContentWidth; + private double minContentHeight; + + protected override Size MeasureOverride(Size availableSize) + { + if (Content is FrameworkElement element) + { + element.Measure(availableSize); + Size contentDesiredSize = element.DesiredSize; + + if (IsWidthRestricted) + { + if (contentDesiredSize.Width > minContentWidth) + { + minContentWidth = contentDesiredSize.Width; + } + + element.MinWidth = minContentWidth; + } + + if (IsHeightRestricted) + { + if (contentDesiredSize.Height > minContentHeight) + { + minContentHeight = contentDesiredSize.Height; + } + + element.MinHeight = minContentHeight; + } + } + + return base.MeasureOverride(availableSize); + } +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Intrinsic/Frozen/IntrinsicFrozen.cs b/src/Snap.Hutao/Snap.Hutao/Model/Intrinsic/Frozen/IntrinsicFrozen.cs index 21a0946d..6963ff37 100644 --- a/src/Snap.Hutao/Snap.Hutao/Model/Intrinsic/Frozen/IntrinsicFrozen.cs +++ b/src/Snap.Hutao/Snap.Hutao/Model/Intrinsic/Frozen/IntrinsicFrozen.cs @@ -14,32 +14,32 @@ internal static class IntrinsicFrozen /// /// 所属地区 /// - public static readonly FrozenSet AssociationTypes = Enum.GetValues().Select(e => e.GetLocalizedDescriptionOrDefault()).OfType().ToFrozenSet(); + public static FrozenSet AssociationTypes { get; } = Enum.GetValues().Select(e => e.GetLocalizedDescriptionOrDefault()).OfType().ToFrozenSet(); /// /// 武器类型 /// - public static readonly FrozenSet WeaponTypes = Enum.GetValues().Select(e => e.GetLocalizedDescriptionOrDefault()).OfType().ToFrozenSet(); + public static FrozenSet WeaponTypes { get; } = Enum.GetValues().Select(e => e.GetLocalizedDescriptionOrDefault()).OfType().ToFrozenSet(); /// /// 物品类型 /// - public static readonly FrozenSet ItemQualities = Enum.GetValues().Select(e => e.GetLocalizedDescriptionOrDefault()).OfType().ToFrozenSet(); + public static FrozenSet ItemQualities { get; } = Enum.GetValues().Select(e => e.GetLocalizedDescriptionOrDefault()).OfType().ToFrozenSet(); /// /// 身材类型 /// - public static readonly FrozenSet BodyTypes = Enum.GetValues().Select(e => e.GetLocalizedDescriptionOrDefault()).OfType().ToFrozenSet(); + public static FrozenSet BodyTypes { get; } = Enum.GetValues().Select(e => e.GetLocalizedDescriptionOrDefault()).OfType().ToFrozenSet(); /// /// 战斗属性 /// - public static readonly FrozenSet FightProperties = Enum.GetValues().Select(e => e.GetLocalizedDescriptionOrDefault()).OfType().ToFrozenSet(); + public static FrozenSet FightProperties { get; } = Enum.GetValues().Select(e => e.GetLocalizedDescriptionOrDefault()).OfType().ToFrozenSet(); /// /// 元素名称 /// - public static readonly FrozenSet ElementNames = FrozenSet.ToFrozenSet( + public static FrozenSet ElementNames { get; } = FrozenSet.ToFrozenSet( [ SH.ModelIntrinsicElementNameFire, SH.ModelIntrinsicElementNameWater, @@ -50,7 +50,7 @@ internal static class IntrinsicFrozen SH.ModelIntrinsicElementNameRock, ]); - public static readonly FrozenSet MaterialTypeDescriptions = FrozenSet.ToFrozenSet( + public static FrozenSet MaterialTypeDescriptions { get; } = FrozenSet.ToFrozenSet( [ SH.ModelMetadataMaterialCharacterAndWeaponEnhancementMaterial, SH.ModelMetadataMaterialCharacterEXPMaterial, diff --git a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx index 09a2dcdf..852a1459 100644 --- a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx +++ b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx @@ -2012,6 +2012,9 @@ 分辨率 + + 快捷设置分辨率 + 将窗口创建为弹出窗口,不带框架 diff --git a/src/Snap.Hutao/Snap.Hutao/View/Card/LaunchGameCard.xaml b/src/Snap.Hutao/Snap.Hutao/View/Card/LaunchGameCard.xaml index 10e7d0ef..30c87e97 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Card/LaunchGameCard.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/Card/LaunchGameCard.xaml @@ -5,6 +5,7 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mxi="using:Microsoft.Xaml.Interactivity" + xmlns:shc="using:Snap.Hutao.Control" xmlns:shcb="using:Snap.Hutao.Control.Behavior" xmlns:shcm="using:Snap.Hutao.Control.Markup" xmlns:shvg="using:Snap.Hutao.ViewModel.Game" @@ -60,14 +61,16 @@ Content="{StaticResource FontIconContentSetting}" FontFamily="{StaticResource SymbolThemeFontFamily}" ToolTipService.ToolTip="{shcm:ResourceString Name=ViewPageHomeLaunchGameSettingAction}"/> - + + + - + \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/View/Control/DescParamComboBox.xaml b/src/Snap.Hutao/Snap.Hutao/View/Control/DescParamComboBox.xaml index b3636856..7b6262a2 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Control/DescParamComboBox.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/Control/DescParamComboBox.xaml @@ -5,6 +5,7 @@ xmlns:cwc="using:CommunityToolkit.WinUI.Controls" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:shc="using:Snap.Hutao.Control" xmlns:shcm="using:Snap.Hutao.Control.Markup" xmlns:shmm="using:Snap.Hutao.Model.Metadata" mc:Ignorable="d"> @@ -22,11 +23,13 @@ - + + + diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/AchievementPage.xaml b/src/Snap.Hutao/Snap.Hutao/View/Page/AchievementPage.xaml index 3de375ba..8ec0dd69 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Page/AchievementPage.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/Page/AchievementPage.xaml @@ -247,13 +247,14 @@ - + + + - + + + + - + + + diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/LaunchGamePage.xaml b/src/Snap.Hutao/Snap.Hutao/View/Page/LaunchGamePage.xaml index ffc86e3e..8d340d31 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Page/LaunchGamePage.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/Page/LaunchGamePage.xaml @@ -171,13 +171,14 @@ - + + + @@ -217,11 +218,13 @@ - + + + @@ -247,13 +250,14 @@ - + + + diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/SettingPage.xaml b/src/Snap.Hutao/Snap.Hutao/View/Page/SettingPage.xaml index 7492285c..cfb744f6 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Page/SettingPage.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/Page/SettingPage.xaml @@ -192,19 +192,23 @@ Description="{shcm:ResourceString Name=ViewPageSettingApperanceLanguageDescription}" Header="{shcm:ResourceString Name=ViewPageSettingApperanceLanguageHeader}" HeaderIcon="{shcm:FontIcon Glyph=}"> - + + + - + + + @@ -240,13 +244,14 @@ Content="Alt" IsChecked="{Binding HotKeyOptions.MouseClickRepeatForeverKeyCombination.ModifierHasAlt, Mode=TwoWay}"/> - + + + - + + +