diff --git a/src/Snap.Hutao/Snap.Hutao/App.xaml b/src/Snap.Hutao/Snap.Hutao/App.xaml index 7295be9f..ee0bec1a 100644 --- a/src/Snap.Hutao/Snap.Hutao/App.xaml +++ b/src/Snap.Hutao/Snap.Hutao/App.xaml @@ -56,6 +56,7 @@ + @@ -103,6 +104,9 @@ + + + @@ -132,8 +136,8 @@ - + + @@ -494,6 +498,10 @@ + + + + \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Extension/EnumerableExtension.cs b/src/Snap.Hutao/Snap.Hutao/Extension/EnumerableExtension.cs index 46bfb50d..e18b653b 100644 --- a/src/Snap.Hutao/Snap.Hutao/Extension/EnumerableExtension.cs +++ b/src/Snap.Hutao/Snap.Hutao/Extension/EnumerableExtension.cs @@ -12,6 +12,11 @@ namespace Snap.Hutao.Extension; [HighQuality] internal static partial class EnumerableExtension { + public static TElement? ElementAtOrLastOrDefault(this IEnumerable source, int index) + { + return source.ElementAtOrDefault(index) ?? source.LastOrDefault(); + } + /// /// 如果传入集合不为空则原路返回, /// 如果传入集合为空返回一个集合的空集 diff --git a/src/Snap.Hutao/Snap.Hutao/View/Card/DailyNoteCard.xaml b/src/Snap.Hutao/Snap.Hutao/View/Card/DailyNoteCard.xaml index 5868e050..6f7fa4f7 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Card/DailyNoteCard.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/Card/DailyNoteCard.xaml @@ -48,7 +48,7 @@ Text="{Binding Uid}"/> - + @@ -73,7 +73,7 @@ - + - + @@ -116,7 +116,7 @@ - + - + diff --git a/src/Snap.Hutao/Snap.Hutao/View/Control/BottomTextControl.xaml b/src/Snap.Hutao/Snap.Hutao/View/Control/BottomTextControl.xaml index a871b38e..bac52a6d 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Control/BottomTextControl.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/Control/BottomTextControl.xaml @@ -7,13 +7,13 @@ mc:Ignorable="d"> - - + + diff --git a/src/Snap.Hutao/Snap.Hutao/View/Control/BottomTextControl.xaml.cs b/src/Snap.Hutao/Snap.Hutao/View/Control/BottomTextControl.xaml.cs index 60e047af..7b812821 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Control/BottomTextControl.xaml.cs +++ b/src/Snap.Hutao/Snap.Hutao/View/Control/BottomTextControl.xaml.cs @@ -14,9 +14,9 @@ namespace Snap.Hutao.View.Control; /// [HighQuality] [ContentProperty(Name = nameof(TopContent))] -[DependencyProperty("Text", typeof(string), "", nameof(OnTextChanged))] -[DependencyProperty("TopContent", typeof(UIElement), default!, nameof(OnContentChanged))] -[DependencyProperty("Fill", typeof(Brush), default!, nameof(OnFillChanged))] +[DependencyProperty("Text", typeof(string), "")] +[DependencyProperty("TopContent", typeof(UIElement), default!)] +[DependencyProperty("Fill", typeof(Brush), default!)] internal sealed partial class BottomTextControl : ContentControl { /// @@ -26,19 +26,4 @@ internal sealed partial class BottomTextControl : ContentControl { InitializeComponent(); } - - private static void OnTextChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args) - { - ((BottomTextControl)sender).TextHost.Text = (string)args.NewValue; - } - - private static void OnContentChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args) - { - ((BottomTextControl)sender).ContentHost.Content = args.NewValue; - } - - private static void OnFillChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args) - { - ((BottomTextControl)sender).BackgroundStack.Background = (Brush)args.NewValue; - } } \ 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 176ded13..1e58033f 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Control/DescParamComboBox.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/Control/DescParamComboBox.xaml @@ -16,8 +16,8 @@ @@ -28,7 +28,7 @@ - + diff --git a/src/Snap.Hutao/Snap.Hutao/View/Control/DescParamComboBox.xaml.cs b/src/Snap.Hutao/Snap.Hutao/View/Control/DescParamComboBox.xaml.cs index cfee7ed0..addab035 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Control/DescParamComboBox.xaml.cs +++ b/src/Snap.Hutao/Snap.Hutao/View/Control/DescParamComboBox.xaml.cs @@ -13,6 +13,7 @@ namespace Snap.Hutao.View.Control; /// [HighQuality] [DependencyProperty("Source", typeof(List>), default!, nameof(OnSourceChanged))] +[DependencyProperty("SelectedItem", typeof(LevelParameters), default!)] [DependencyProperty("PreferredSelectedIndex", typeof(int), 0)] internal sealed partial class DescParamComboBox : UserControl { @@ -26,23 +27,12 @@ internal sealed partial class DescParamComboBox : UserControl private static void OnSourceChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args) { - // Some of the {x:Bind} feature is not working properly, - // so we use this simple code behind approach to achieve selection function if (sender is DescParamComboBox descParamComboBox) { if (args.NewValue != args.OldValue && args.NewValue is List> list) { - descParamComboBox.ItemHost.ItemsSource = list; - descParamComboBox.ItemHost.SelectedIndex = Math.Min(descParamComboBox.PreferredSelectedIndex, list.Count - 1); + descParamComboBox.SelectedItem = list.ElementAtOrLastOrDefault(descParamComboBox.PreferredSelectedIndex); } } } - - private void ItemHostSelectionChanged(object sender, SelectionChangedEventArgs e) - { - if (sender is ComboBox { SelectedIndex: >= 0 } comboBox) - { - DetailsHost.ItemsSource = Source[comboBox.SelectedIndex]?.Parameters; - } - } } diff --git a/src/Snap.Hutao/Snap.Hutao/View/Control/HutaoStatisticsCard.xaml b/src/Snap.Hutao/Snap.Hutao/View/Control/HutaoStatisticsCard.xaml index dc41e180..a8fa5e8f 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Control/HutaoStatisticsCard.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/Control/HutaoStatisticsCard.xaml @@ -10,6 +10,7 @@ xmlns:shcp="using:Snap.Hutao.Control.Panel" xmlns:shvcont="using:Snap.Hutao.View.Control" xmlns:shvg="using:Snap.Hutao.ViewModel.GachaLog" + xmlns:shvh="using:Snap.Hutao.View.Helper" d:DataContext="{d:DesignInstance shvg:HutaoWishSummary}" mc:Ignorable="d"> @@ -21,8 +22,7 @@ Style="{StaticResource BorderCardStyle}"> + @@ -56,64 +57,37 @@ Margin="0,16,0,8" Style="{StaticResource BaseTextBlockStyle}" Text="{shcm:ResourceString Name=ViewControlStatisticsCardUpText}"/> - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - + diff --git a/src/Snap.Hutao/Snap.Hutao/View/Control/ItemIcon.xaml b/src/Snap.Hutao/Snap.Hutao/View/Control/ItemIcon.xaml index 08f17c3b..cf92fca4 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Control/ItemIcon.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/Control/ItemIcon.xaml @@ -6,9 +6,8 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:shci="using:Snap.Hutao.Control.Image" xmlns:shmmc="using:Snap.Hutao.Model.Metadata.Converter" - xmlns:shvc="using:Snap.Hutao.View.Control" - Width="80" - Height="80" + xmlns:shvh="using:Snap.Hutao.View.Helper" + shvh:FrameworkElementHelper.SquareLength="80" mc:Ignorable="d"> diff --git a/src/Snap.Hutao/Snap.Hutao/View/Control/LaunchGameResourceExpander.xaml b/src/Snap.Hutao/Snap.Hutao/View/Control/LaunchGameResourceExpander.xaml index 4947b339..503ea07e 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Control/LaunchGameResourceExpander.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/Control/LaunchGameResourceExpander.xaml @@ -4,8 +4,10 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:shwhshl="using:Snap.Hutao.Web.Hoyolab.SdkStatic.Hk4e.Launcher" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" + d:DataContext="{d:DesignInstance shwhshl:Package}" IsExpanded="True" mc:Ignorable="d"> @@ -21,20 +23,20 @@ Grid.Row="1" Margin="0,4,0,0" Orientation="Horizontal"> - + - + - + - + - + - + - 0,0,16,0 - 0 - @@ -28,10 +26,7 @@ - + - - - - - - + - - - - - - - + + + + +