spiral abyss rework done

This commit is contained in:
DismissedLight
2023-09-19 23:43:25 +08:00
parent 156740de14
commit cf8a9581d6
10 changed files with 658 additions and 582 deletions

View File

@@ -6252,6 +6252,24 @@ namespace Snap.Hutao.Resource.Localization {
}
}
/// <summary>
/// 查找类似 角色出场率 = 本层上阵该角色次数(层内重复出现只记一次)/ 深渊记录总数 的本地化字符串。
/// </summary>
internal static string ViewSpiralAbyssAvatarAppearanceRankDescription {
get {
return ResourceManager.GetString("ViewSpiralAbyssAvatarAppearanceRankDescription", resourceCulture);
}
}
/// <summary>
/// 查找类似 角色使用率 = 本层上阵该角色次数(层内重复出现只记一次)/ 持有该角色的深渊记录总数 的本地化字符串。
/// </summary>
internal static string ViewSpiralAbyssAvatarUsageRankDescription {
get {
return ResourceManager.GetString("ViewSpiralAbyssAvatarUsageRankDescription", resourceCulture);
}
}
/// <summary>
/// 查找类似 战斗数据 的本地化字符串。
/// </summary>
@@ -6298,7 +6316,7 @@ namespace Snap.Hutao.Resource.Localization {
}
/// <summary>
/// 查找类似 详细数据 的本地化字符串。
/// 查找类似 深境螺旋 的本地化字符串。
/// </summary>
internal static string ViewSpiralAbyssDetail {
get {
@@ -6324,6 +6342,15 @@ namespace Snap.Hutao.Resource.Localization {
}
}
/// <summary>
/// 查找类似 本期统计 的本地化字符串。
/// </summary>
internal static string ViewSpiralAbyssHutaoStatistics {
get {
return ResourceManager.GetString("ViewSpiralAbyssHutaoStatistics", resourceCulture);
}
}
/// <summary>
/// 查找类似 最深抵达 的本地化字符串。
/// </summary>
@@ -6351,6 +6378,15 @@ namespace Snap.Hutao.Resource.Localization {
}
}
/// <summary>
/// 查找类似 攻击地脉镇石 的本地化字符串。
/// </summary>
internal static string ViewSpiralAbyssRecordMonsterAttacksMonolith {
get {
return ResourceManager.GetString("ViewSpiralAbyssRecordMonsterAttacksMonolith", resourceCulture);
}
}
/// <summary>
/// 查找类似 刷新数据 的本地化字符串。
/// </summary>

View File

@@ -2237,6 +2237,12 @@
<data name="ViewServiceHutaoUserLoginOrRegisterHint" xml:space="preserve">
<value>立即登录或注册</value>
</data>
<data name="ViewSpiralAbyssAvatarAppearanceRankDescription" xml:space="preserve">
<value>角色出场率 = 本层上阵该角色次数(层内重复出现只记一次)/ 深渊记录总数</value>
</data>
<data name="ViewSpiralAbyssAvatarUsageRankDescription" xml:space="preserve">
<value>角色使用率 = 本层上阵该角色次数(层内重复出现只记一次)/ 持有该角色的深渊记录总数</value>
</data>
<data name="ViewSpiralAbyssBattleHeader" xml:space="preserve">
<value>战斗数据</value>
</data>
@@ -2253,7 +2259,7 @@
<value>最多击破</value>
</data>
<data name="ViewSpiralAbyssDetail" xml:space="preserve">
<value>详细数据</value>
<value>深境螺旋</value>
</data>
<data name="ViewSpiralAbyssEnergySkill" xml:space="preserve">
<value>元素爆发</value>
@@ -2261,6 +2267,9 @@
<data name="ViewSpiralAbyssHeader" xml:space="preserve">
<value>深渊记录</value>
</data>
<data name="ViewSpiralAbyssHutaoStatistics" xml:space="preserve">
<value>本期统计</value>
</data>
<data name="ViewSpiralAbyssMaxFloor" xml:space="preserve">
<value>最深抵达</value>
</data>
@@ -2270,6 +2279,9 @@
<data name="ViewSpiralAbyssRecordBattleAvatars" xml:space="preserve">
<value>上场角色</value>
</data>
<data name="ViewSpiralAbyssRecordMonsterAttacksMonolith" xml:space="preserve">
<value>攻击地脉镇石</value>
</data>
<data name="ViewSpiralAbyssRefresh" xml:space="preserve">
<value>刷新数据</value>
</data>

View File

@@ -19,7 +19,6 @@ internal sealed partial class DocumentationProvider : IDocumentationProvider
[typeof(CultivationPage)] = "https://hut.ao/features/develop-plan.html",
[typeof(DailyNotePage)] = "https://hut.ao/features/real-time-notes.html",
[typeof(GachaLogPage)] = "https://hut.ao/features/wish-export.html",
[typeof(HutaoDatabasePage)] = "https://hut.ao/features/hutao-API.html",
[typeof(HutaoPassportPage)] = "https://hut.ao/zh/features/hutao-settings.html#%E8%83%A1%E6%A1%83%E5%B8%90%E5%8F%B7",
[typeof(LaunchGamePage)] = "https://hut.ao/features/game-launcher.html",
[typeof(LoginHoyoverseUserPage)] = "https://hut.ao/features/mhy-account-switch.html",

View File

@@ -148,7 +148,6 @@
<None Remove="View\Page\CultivationPage.xaml" />
<None Remove="View\Page\DailyNotePage.xaml" />
<None Remove="View\Page\GachaLogPage.xaml" />
<None Remove="View\Page\HutaoDatabasePage.xaml" />
<None Remove="View\Page\HutaoPassportPage.xaml" />
<None Remove="View\Page\LaunchGamePage.xaml" />
<None Remove="View\Page\LoginMihoyoUserPage.xaml" />
@@ -476,11 +475,6 @@
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
<ItemGroup>
<Page Update="View\Page\HutaoDatabasePage.xaml">
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
<ItemGroup>
<Page Update="View\Dialog\GachaLogUrlDialog.xaml">
<Generator>MSBuild:Compile</Generator>

View File

@@ -67,11 +67,6 @@
<NavigationViewItemHeader Content="{shcm:ResourceString Name=ViewDataHeader}"/>
<NavigationViewItem
shvh:NavHelper.NavigateTo="shvp:HutaoDatabasePage"
Content="{shcm:ResourceString Name=ViewHutaoDatabaseHeader}"
Icon="{shcm:BitmapIcon Source=ms-appx:///Resource/Navigation/Database.png}"/>
<NavigationViewItem
shvh:NavHelper.NavigateTo="shvp:WikiAvatarPage"
Content="{shcm:ResourceString Name=ViewWikiAvatarHeader}"

View File

@@ -1,322 +0,0 @@
<shc:ScopedPage
x:Class="Snap.Hutao.View.Page.HutaoDatabasePage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
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: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:shvcom="using:Snap.Hutao.ViewModel.Complex"
xmlns:shvcon="using:Snap.Hutao.View.Control"
d:DataContext="{d:DesignInstance shvcom:HutaoDatabaseViewModel}"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
mc:Ignorable="d">
<mxi:Interaction.Behaviors>
<shcb:InvokeCommandOnLoadedBehavior Command="{Binding OpenUICommand}"/>
</mxi:Interaction.Behaviors>
<Page.Resources>
<DataTemplate x:Key="TeamItemTemplate" d:DataType="shvcom:Team">
<Border Margin="0,0,0,8" Style="{StaticResource BorderCardStyle}">
<Grid Margin="6">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="120"/>
</Grid.ColumnDefinitions>
<ItemsControl HorizontalAlignment="Left" ItemsSource="{Binding}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" Spacing="6"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<shvcon:ItemIcon
Width="48"
Height="48"
Icon="{Binding Icon}"
Quality="{Binding Quality}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<TextBlock
Grid.Column="1"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{Binding Rate}"/>
</Grid>
</Border>
</DataTemplate>
</Page.Resources>
<Grid>
<Pivot Visibility="{Binding Overview, Converter={StaticResource EmptyObjectToVisibilityConverter}}">
<Pivot.RightHeader>
<CommandBar DefaultLabelPosition="Right">
<AppBarButton Icon="{shcm:FontIcon Glyph=&#xE946;}" Label="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverview}">
<AppBarButton.Flyout>
<Flyout Placement="BottomEdgeAlignedRight">
<StackPanel
MinWidth="260"
Margin="0,-29,0,0"
Spacing="{StaticResource SettingsCardSpacing}">
<StackPanel.Resources>
<Thickness x:Key="SettingsCardPadding">16</Thickness>
<x:Double x:Key="SettingsCardWrapThreshold">0</x:Double>
<x:Double x:Key="SettingsCardWrapNoIconThreshold">0</x:Double>
<x:Double x:Key="SettingsCardMinHeight">0</x:Double>
</StackPanel.Resources>
<TextBlock Style="{StaticResource SettingsSectionHeaderTextBlockStyle}" Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewDataCollect}"/>
<cwc:SettingsCard Content="{Binding Overview.RefreshTime}" Header="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewRefreshTime}"/>
<cwc:SettingsCard Content="{Binding Overview.RecordTotal}" Header="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewRecordTotal}"/>
<TextBlock Style="{StaticResource SettingsSectionHeaderTextBlockStyle}" Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewSpiralAbyss}"/>
<cwc:SettingsCard Content="{Binding Overview.SpiralAbyssTotal}" Header="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewSpiralAbyssTotal}"/>
<cwc:SettingsCard Padding="16,8" Header="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewSpiralAbyssPassed}">
<StackPanel>
<TextBlock Text="{Binding Overview.SpiralAbyssPassedPercent}"/>
<TextBlock
HorizontalAlignment="Right"
Opacity="0.7"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{Binding Overview.SpiralAbyssPassed}"/>
</StackPanel>
</cwc:SettingsCard>
<cwc:SettingsCard Padding="16,8" Header="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewSpiralAbyssFullStar}">
<StackPanel>
<TextBlock Text="{Binding Overview.SpiralAbyssFullStarPercent}"/>
<TextBlock
HorizontalAlignment="Right"
Opacity="0.7"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{Binding Overview.SpiralAbyssFullStar}"/>
</StackPanel>
</cwc:SettingsCard>
<cwc:SettingsCard Content="{Binding Overview.SpiralAbyssStarAverage}" Header="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewSpiralAbyssStarAverage}"/>
<cwc:SettingsCard Content="{Binding Overview.SpiralAbyssBattleAverage}" Header="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewSpiralAbyssBattleAverage}"/>
</StackPanel>
</Flyout>
</AppBarButton.Flyout>
</AppBarButton>
</CommandBar>
</Pivot.RightHeader>
<PivotItem Header="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewAvatarUsageRank}">
<Pivot ItemsSource="{Binding AvatarUsageRanks}">
<Pivot.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Floor}"/>
</DataTemplate>
</Pivot.HeaderTemplate>
<Pivot.ItemTemplate>
<DataTemplate>
<GridView
Padding="16,16,4,0"
ItemContainerStyle="{StaticResource LargeGridViewItemStyle}"
ItemsSource="{Binding Avatars}"
SelectionMode="None">
<GridView.ItemTemplate>
<DataTemplate>
<shvcon:BottomTextControl Text="{Binding Rate}">
<shvcon:ItemIcon Icon="{Binding Icon}" Quality="{Binding Quality}"/>
</shvcon:BottomTextControl>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
</DataTemplate>
</Pivot.ItemTemplate>
</Pivot>
</PivotItem>
<PivotItem Header="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewAvatarAppearanceRank}">
<Pivot ItemsSource="{Binding AvatarAppearanceRanks}">
<Pivot.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Floor}"/>
</DataTemplate>
</Pivot.HeaderTemplate>
<Pivot.ItemTemplate>
<DataTemplate>
<GridView
Padding="16,16,4,0"
ItemContainerStyle="{StaticResource LargeGridViewItemStyle}"
ItemsSource="{Binding Avatars}"
SelectionMode="None">
<ItemsControl.ItemTemplate>
<DataTemplate>
<shvcon:BottomTextControl Text="{Binding Rate}">
<shvcon:ItemIcon Icon="{Binding Icon}" Quality="{Binding Quality}"/>
</shvcon:BottomTextControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</GridView>
</DataTemplate>
</Pivot.ItemTemplate>
</Pivot>
</PivotItem>
<PivotItem Header="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewTeamAppearance}">
<Pivot ItemsSource="{Binding TeamAppearances}">
<Pivot.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Floor}"/>
</DataTemplate>
</Pivot.HeaderTemplate>
<Pivot.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<ListView
Grid.Column="0"
Margin="0,0,0,0"
Padding="0,8,0,0"
ItemTemplate="{StaticResource TeamItemTemplate}"
ItemsSource="{Binding Up}"
SelectionMode="None"/>
<ListView
Grid.Column="1"
Margin="0,0,0,0"
Padding="0,8,0,0"
ItemTemplate="{StaticResource TeamItemTemplate}"
ItemsSource="{Binding Down}"
SelectionMode="None"/>
</Grid>
</DataTemplate>
</Pivot.ItemTemplate>
</Pivot>
</PivotItem>
<PivotItem Header="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewAvatarConstellation}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid Margin="16,0,16,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="48"/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock
Grid.Column="0"
Margin="6"
HorizontalAlignment="Center"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewConstellationAvatar}"/>
<TextBlock
Grid.Column="1"
Margin="6"
HorizontalAlignment="Center"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewConstellationHolding}"/>
<TextBlock
Grid.Column="2"
Margin="6"
HorizontalAlignment="Center"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewConstellation0}"/>
<TextBlock
Grid.Column="3"
Margin="6"
HorizontalAlignment="Center"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewConstellation1}"/>
<TextBlock
Grid.Column="4"
Margin="6"
HorizontalAlignment="Center"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewConstellation2}"/>
<TextBlock
Grid.Column="5"
Margin="6"
HorizontalAlignment="Center"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewConstellation3}"/>
<TextBlock
Grid.Column="6"
Margin="6"
HorizontalAlignment="Center"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewConstellation4}"/>
<TextBlock
Grid.Column="7"
Margin="6"
HorizontalAlignment="Center"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewConstellation5}"/>
<TextBlock
Grid.Column="8"
Margin="6"
HorizontalAlignment="Center"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewConstellation6}"/>
</Grid>
<ListView
Grid.Row="1"
Margin="0,0,4,0"
HorizontalContentAlignment="Stretch"
ItemsPanel="{StaticResource ItemsStackPanelTemplate}"
ItemsSource="{Binding AvatarConstellationInfos}"
SelectionMode="None">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Margin="0,0,0,8" Style="{StaticResource BorderCardStyle}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<shvcon:ItemIcon
Width="48"
Height="48"
Icon="{Binding Icon}"
Quality="{Binding Quality}"/>
<Grid Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="7*"/>
</Grid.ColumnDefinitions>
<TextBlock
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{Binding Rate}"/>
<ItemsControl Grid.Column="1" ItemsSource="{Binding Rates}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<cwc:UniformGrid Columns="7"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{Binding}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</Grid>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ListView>
</Grid>
</PivotItem>
</Pivot>
<shvcon:LoadingView IsLoading="{Binding Overview, Converter={StaticResource EmptyObjectToBoolRevertConverter}}"/>
</Grid>
</shc:ScopedPage>

View File

@@ -1,23 +0,0 @@
// Copyright (c) DGP Studio. All rights reserved.
// Licensed under the MIT license.
using Snap.Hutao.Control;
using Snap.Hutao.ViewModel.Complex;
namespace Snap.Hutao.View.Page;
/// <summary>
/// 胡桃数据库页面
/// </summary>
[HighQuality]
internal sealed partial class HutaoDatabasePage : ScopedPage
{
/// <summary>
/// 构造一个新的胡桃数据库页面
/// </summary>
public HutaoDatabasePage()
{
InitializeWith<HutaoDatabaseViewModel>();
InitializeComponent();
}
}

View File

@@ -12,7 +12,8 @@
xmlns:shci="using:Snap.Hutao.Control.Image"
xmlns:shcm="using:Snap.Hutao.Control.Markup"
xmlns:shct="using:Snap.Hutao.Control.Text"
xmlns:shvc="using:Snap.Hutao.View.Control"
xmlns:shvcom="using:Snap.Hutao.ViewModel.Complex"
xmlns:shvcon="using:Snap.Hutao.View.Control"
xmlns:shvs="using:Snap.Hutao.ViewModel.SpiralAbyss"
d:DataContext="{d:DesignInstance shvs:SpiralAbyssRecordViewModel}"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
@@ -56,6 +57,62 @@
Text="{Binding}"/>
</DataTemplate>
<DataTemplate x:Key="MonsterTemplate" x:DataType="shvs:MonsterView">
<Grid>
<ToolTipService.ToolTip>
<StackPanel>
<TextBlock Style="{StaticResource BaseTextBlockStyle}" Text="{Binding Name}"/>
<MenuFlyoutSeparator Margin="-5,4" Visibility="{Binding AttackMonolith, Converter={StaticResource BoolToVisibilityConverter}}"/>
<TextBlock
Style="{StaticResource BaseTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewSpiralAbyssRecordMonsterAttacksMonolith}"
Visibility="{Binding AttackMonolith, Converter={StaticResource BoolToVisibilityConverter}}"/>
<MenuFlyoutSeparator Margin="-5,4" Visibility="{Binding Affixes, Converter={StaticResource EmptyObjectToVisibilityConverter}}"/>
<ItemsControl ItemsSource="{Binding Affixes}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Name}"/>
<shct:HtmlDescriptionTextBlock
Description="{Binding Description}"
Opacity="0.8"
TextStyle="{StaticResource CaptionTextBlockStyle}"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</ToolTipService.ToolTip>
<Grid Height="40" CornerRadius="20">
<shvcon:ItemIcon
Width="40"
Height="40"
Icon="{Binding Icon}"/>
</Grid>
<Ellipse
Width="40"
Height="40"
Stroke="{ThemeResource SystemFillColorCriticalBrush}"
StrokeThickness="2"
Visibility="{Binding Affixes, Converter={StaticResource EmptyObjectToVisibilityConverter}}"/>
<Ellipse
Width="40"
Height="40"
Stroke="{ThemeResource SystemFillColorCautionBrush}"
StrokeThickness="2"
Visibility="{Binding AttackMonolith, Converter={StaticResource BoolToVisibilityConverter}}"/>
<InfoBadge
HorizontalAlignment="Right"
VerticalAlignment="Bottom"
Visibility="{Binding IsCountOne, Converter={StaticResource BoolToVisibilityRevertConverter}}"
Value="{Binding Count}">
<InfoBadge.RenderTransform>
<CompositeTransform TranslateX="4" TranslateY="4"/>
</InfoBadge.RenderTransform>
</InfoBadge>
</Grid>
</DataTemplate>
<DataTemplate x:Key="MonsterWaveTempate" x:DataType="shvs:BattleWave">
<StackPanel>
<TextBlock
@@ -63,60 +120,21 @@
Text="{Binding Description}"
TextTrimming="CharacterEllipsis"
TextWrapping="NoWrap"/>
<ItemsControl Margin="0,4,0,0" ItemsSource="{Binding Monsters}">
<ItemsControl
Margin="0,4,0,0"
ItemTemplate="{StaticResource MonsterTemplate}"
ItemsSource="{Binding Monsters}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<cwc:WrapPanel HorizontalSpacing="6" VerticalSpacing="6"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<ToolTipService.ToolTip>
<StackPanel>
<TextBlock Style="{StaticResource BaseTextBlockStyle}" Text="{Binding Name}"/>
<MenuFlyoutSeparator Margin="-5,4" Visibility="{Binding Affixes, Converter={StaticResource EmptyObjectToVisibilityConverter}}"/>
<ItemsControl ItemsSource="{Binding Affixes}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Name}"/>
<shct:HtmlDescriptionTextBlock
Description="{Binding Description}"
Opacity="0.8"
TextStyle="{StaticResource CaptionTextBlockStyle}"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</ToolTipService.ToolTip>
<Grid CornerRadius="24">
<shvc:ItemIcon
Width="36"
Height="36"
Icon="{Binding Icon}"/>
</Grid>
<Ellipse
Width="36"
Height="36"
Stroke="{ThemeResource SystemFillColorCautionBrush}"
StrokeThickness="3"
Visibility="{Binding Affixes, Converter={StaticResource EmptyObjectToVisibilityConverter}}"/>
<InfoBadge
HorizontalAlignment="Right"
VerticalAlignment="Bottom"
Visibility="{Binding IsCountOne, Converter={StaticResource BoolToVisibilityRevertConverter}}"
Value="{Binding Count}"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="AvatarTemplate" x:DataType="shvs:AvatarView">
<shvc:ItemIcon
<shvcon:ItemIcon
Width="60"
Height="60"
Margin="0,0,8,8"
@@ -273,192 +291,540 @@
</Grid>
</Border>
</DataTemplate>
</shc:ScopedPage.Resources>
<SplitView
Grid.Row="1"
DisplayMode="Inline"
IsPaneOpen="True"
OpenPaneLength="248"
PaneBackground="Transparent">
<SplitView.Pane>
<ListView
Background="{ThemeResource CardBackgroundFillColorDefaultBrush}"
ItemTemplate="{StaticResource SpiralAbyssListTemplate}"
ItemsSource="{Binding SpiralAbyssEntries}"
SelectedItem="{Binding SelectedView, Mode=TwoWay}"/>
</SplitView.Pane>
<SplitView.Content>
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border
Grid.Row="0"
Height="{ThemeResource AppBarThemeCompactHeight}"
VerticalAlignment="Top"
Background="{ThemeResource CardBackgroundFillColorDefaultBrush}"
BorderBrush="{ThemeResource CardStrokeColorDefaultBrush}"
BorderThickness="0,0,0,1"/>
<Pivot Grid.RowSpan="2">
<Pivot.RightHeader>
<CommandBar Grid.Row="0" DefaultLabelPosition="Right">
<AppBarButton
Command="{Binding UploadSpiralAbyssRecordCommand}"
Icon="{shcm:FontIcon Glyph=&#xE898;}"
Label="{shcm:ResourceString Name=ViewSpiralAbyssUploadRecord}"/>
<AppBarButton
Command="{Binding RefreshCommand}"
Icon="{shcm:FontIcon Glyph=&#xE72C;}"
Label="{shcm:ResourceString Name=ViewSpiralAbyssRefresh}"/>
<AppBarButton Icon="{shcm:FontIcon Glyph=&#xE8A1;}" Label="{shcm:ResourceString Name=ViewSpiralAbyssStatistics}">
<AppBarButton.Flyout>
<Flyout>
<Flyout.FlyoutPresenterStyle>
<Style BasedOn="{StaticResource DefaultFlyoutPresenterStyle}" TargetType="FlyoutPresenter">
<Setter Property="MaxWidth" Value="1920"/>
</Style>
</Flyout.FlyoutPresenterStyle>
<Grid ColumnSpacing="6" DataContext="{Binding SelectedView}">
<Grid.Resources>
<x:Double x:Key="SettingsCardWrapThreshold">0</x:Double>
<x:Double x:Key="SettingsCardWrapNoIconThreshold">0</x:Double>
<x:Double x:Key="SettingsCardMinHeight">0</x:Double>
</Grid.Resources>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="305"/>
<ColumnDefinition Width="225"/>
</Grid.ColumnDefinitions>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border
Grid.Row="0"
Height="{ThemeResource AppBarThemeCompactHeight}"
VerticalAlignment="Top"
Background="{ThemeResource CardBackgroundFillColorDefaultBrush}"
BorderBrush="{ThemeResource CardStrokeColorDefaultBrush}"
BorderThickness="0,0,0,1"/>
<StackPanel Grid.Column="0" Spacing="{StaticResource SettingsCardSpacing}">
<cwc:SettingsCard Header="{shcm:ResourceString Name=ViewSpiralAbyssDefeat}">
<StackPanel Orientation="Horizontal">
<TextBlock
Margin="0,0,16,0"
VerticalAlignment="Center"
Text="{Binding Defeat.Value}"/>
<shci:CachedImage
Width="48"
Height="48"
Margin="-8,-24,-8,-8"
Source="{Binding Defeat.SideIcon}"/>
</StackPanel>
</cwc:SettingsCard>
<Pivot Grid.RowSpan="2">
<Pivot.RightHeader>
<CommandBar Grid.Row="0" DefaultLabelPosition="Right">
<AppBarButton
Command="{Binding UploadSpiralAbyssRecordCommand}"
Icon="{shcm:FontIcon Glyph=&#xE898;}"
Label="{shcm:ResourceString Name=ViewSpiralAbyssUploadRecord}"/>
<AppBarButton
Command="{Binding RefreshCommand}"
Icon="{shcm:FontIcon Glyph=&#xE72C;}"
Label="{shcm:ResourceString Name=ViewSpiralAbyssRefresh}"/>
</CommandBar>
</Pivot.RightHeader>
<cwc:SettingsCard Header="{shcm:ResourceString Name=ViewSpiralAbyssDamage}">
<StackPanel Orientation="Horizontal">
<TextBlock
Margin="0,0,16,0"
VerticalAlignment="Center"
Text="{Binding Damage.Value}"/>
<shci:CachedImage
Width="48"
Height="48"
Margin="-8,-24,-8,-8"
Source="{Binding Damage.SideIcon}"/>
</StackPanel>
</cwc:SettingsCard>
<cwc:SettingsCard Header="{shcm:ResourceString Name=ViewSpiralAbyssTakeDamage}">
<StackPanel Orientation="Horizontal">
<TextBlock
Margin="0,0,16,0"
VerticalAlignment="Center"
Text="{Binding TakeDamage.Value}"/>
<shci:CachedImage
Width="48"
Height="48"
Margin="-8,-24,-8,-8"
Source="{Binding TakeDamage.SideIcon}"/>
</StackPanel>
</cwc:SettingsCard>
<cwc:SettingsCard Header="{shcm:ResourceString Name=ViewSpiralAbyssNormalSkill}">
<StackPanel Orientation="Horizontal">
<TextBlock
Margin="0,0,16,0"
VerticalAlignment="Center"
Text="{Binding NormalSkill.Value}"/>
<shci:CachedImage
Width="48"
Height="48"
Margin="-8,-24,-8,-8"
Source="{Binding NormalSkill.SideIcon}"/>
</StackPanel>
</cwc:SettingsCard>
<cwc:SettingsCard Header="{shcm:ResourceString Name=ViewSpiralAbyssEnergySkill}">
<StackPanel Orientation="Horizontal">
<TextBlock
Margin="0,0,16,0"
VerticalAlignment="Center"
Text="{Binding EnergySkill.Value}"/>
<shci:CachedImage
Width="48"
Height="48"
Margin="-8,-24,-8,-8"
Source="{Binding EnergySkill.SideIcon}"/>
</StackPanel>
</cwc:SettingsCard>
</StackPanel>
<StackPanel Grid.Column="1" Spacing="{StaticResource SettingsCardSpacing}">
<cwc:SettingsCard Content="{Binding MaxFloor}" Header="{shcm:ResourceString Name=ViewSpiralAbyssMaxFloor}"/>
<cwc:SettingsCard Content="{Binding TotalBattleTimes}" Header="{shcm:ResourceString Name=ViewSpiralAbyssBattleTimes}"/>
<cwc:SettingsCard Content="{Binding TotalStar}" Header="{shcm:ResourceString Name=ViewSpiralAbyssTotalStar}"/>
<TextBlock
Margin="1,6,0,5"
Style="{StaticResource SettingsSectionHeaderTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewSpiralAbyssReveal}"/>
<ItemsControl HorizontalAlignment="Left" ItemsSource="{Binding Reveals}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<cwc:UniformGrid ColumnSpacing="3" Columns="4"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<shvc:BottomTextControl Text="{Binding Value}">
<shvc:ItemIcon
Width="52"
Height="52"
Icon="{Binding Icon}"
Quality="{Binding Quality}"/>
</shvc:BottomTextControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</Grid>
</Flyout>
</AppBarButton.Flyout>
</AppBarButton>
</CommandBar>
</Pivot.RightHeader>
<PivotItem DataContext="{Binding SelectedView}" Header="{shcm:ResourceString Name=ViewSpiralAbyssDetail}">
<PivotItem Header="{shcm:ResourceString Name=ViewSpiralAbyssDetail}">
<SplitView
Grid.Row="1"
DisplayMode="Inline"
IsPaneOpen="True"
OpenPaneLength="248"
PaneBackground="Transparent">
<SplitView.Pane>
<ListView
Background="{ThemeResource CardBackgroundFillColorDefaultBrush}"
ItemTemplate="{StaticResource SpiralAbyssListTemplate}"
ItemsSource="{Binding SpiralAbyssEntries}"
SelectedItem="{Binding SelectedView, Mode=TwoWay}"/>
</SplitView.Pane>
<SplitView.Content>
<ScrollViewer>
<StackPanel>
<!-- 渊月祝福 -->
<TextBlock
Margin="16,16,0,0"
Style="{ThemeResource SubtitleTextBlockStyle}"
Text="{Binding BlessingName}"/>
<ItemsControl
Margin="16,0,16,0"
ItemTemplate="{StaticResource DescriptionTextTemplate}"
ItemsSource="{Binding Blessings}"/>
<StackPanel DataContext="{Binding SelectedView}">
<Grid Margin="16,12,16,0">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Margin="1,0,0,0">
<!-- 渊月祝福 -->
<TextBlock
Margin="0,0,16,0"
Style="{ThemeResource SubtitleTextBlockStyle}"
Text="{Binding BlessingName}"/>
<ItemsControl
Margin="0,0,16,0"
ItemTemplate="{StaticResource DescriptionTextTemplate}"
ItemsSource="{Binding Blessings}"/>
</StackPanel>
<AppBarButton
Grid.Column="1"
Icon="{shcm:FontIcon Glyph=&#xE8A1;}"
Label="{shcm:ResourceString Name=ViewSpiralAbyssStatistics}"
Visibility="{Binding Engaged, Converter={StaticResource BoolToVisibilityConverter}}">
<AppBarButton.Flyout>
<Flyout Placement="BottomEdgeAlignedRight">
<Flyout.FlyoutPresenterStyle>
<Style BasedOn="{StaticResource DefaultFlyoutPresenterStyle}" TargetType="FlyoutPresenter">
<Setter Property="MaxWidth" Value="1920"/>
</Style>
</Flyout.FlyoutPresenterStyle>
<Grid ColumnSpacing="6">
<Grid.Resources>
<x:Double x:Key="SettingsCardWrapThreshold">0</x:Double>
<x:Double x:Key="SettingsCardWrapNoIconThreshold">0</x:Double>
<x:Double x:Key="SettingsCardMinHeight">0</x:Double>
</Grid.Resources>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="305"/>
<ColumnDefinition Width="225"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Spacing="{StaticResource SettingsCardSpacing}">
<cwc:SettingsCard Header="{shcm:ResourceString Name=ViewSpiralAbyssDefeat}">
<StackPanel Orientation="Horizontal">
<TextBlock
Margin="0,0,16,0"
VerticalAlignment="Center"
Text="{Binding Defeat.Value}"/>
<shci:CachedImage
Width="48"
Height="48"
Margin="-8,-24,-8,-8"
Source="{Binding Defeat.SideIcon}"/>
</StackPanel>
</cwc:SettingsCard>
<cwc:SettingsCard Header="{shcm:ResourceString Name=ViewSpiralAbyssDamage}">
<StackPanel Orientation="Horizontal">
<TextBlock
Margin="0,0,16,0"
VerticalAlignment="Center"
Text="{Binding Damage.Value}"/>
<shci:CachedImage
Width="48"
Height="48"
Margin="-8,-24,-8,-8"
Source="{Binding Damage.SideIcon}"/>
</StackPanel>
</cwc:SettingsCard>
<cwc:SettingsCard Header="{shcm:ResourceString Name=ViewSpiralAbyssTakeDamage}">
<StackPanel Orientation="Horizontal">
<TextBlock
Margin="0,0,16,0"
VerticalAlignment="Center"
Text="{Binding TakeDamage.Value}"/>
<shci:CachedImage
Width="48"
Height="48"
Margin="-8,-24,-8,-8"
Source="{Binding TakeDamage.SideIcon}"/>
</StackPanel>
</cwc:SettingsCard>
<cwc:SettingsCard Header="{shcm:ResourceString Name=ViewSpiralAbyssNormalSkill}">
<StackPanel Orientation="Horizontal">
<TextBlock
Margin="0,0,16,0"
VerticalAlignment="Center"
Text="{Binding NormalSkill.Value}"/>
<shci:CachedImage
Width="48"
Height="48"
Margin="-8,-24,-8,-8"
Source="{Binding NormalSkill.SideIcon}"/>
</StackPanel>
</cwc:SettingsCard>
<cwc:SettingsCard Header="{shcm:ResourceString Name=ViewSpiralAbyssEnergySkill}">
<StackPanel Orientation="Horizontal">
<TextBlock
Margin="0,0,16,0"
VerticalAlignment="Center"
Text="{Binding EnergySkill.Value}"/>
<shci:CachedImage
Width="48"
Height="48"
Margin="-8,-24,-8,-8"
Source="{Binding EnergySkill.SideIcon}"/>
</StackPanel>
</cwc:SettingsCard>
</StackPanel>
<StackPanel Grid.Column="1" Spacing="{StaticResource SettingsCardSpacing}">
<cwc:SettingsCard Content="{Binding MaxFloor}" Header="{shcm:ResourceString Name=ViewSpiralAbyssMaxFloor}"/>
<cwc:SettingsCard Content="{Binding TotalBattleTimes}" Header="{shcm:ResourceString Name=ViewSpiralAbyssBattleTimes}"/>
<cwc:SettingsCard Content="{Binding TotalStar}" Header="{shcm:ResourceString Name=ViewSpiralAbyssTotalStar}"/>
<TextBlock
Margin="1,6,0,5"
Style="{StaticResource SettingsSectionHeaderTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewSpiralAbyssReveal}"/>
<ItemsControl HorizontalAlignment="Left" ItemsSource="{Binding Reveals}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<cwc:UniformGrid ColumnSpacing="3" Columns="4"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<shvcon:BottomTextControl Text="{Binding Value}">
<shvcon:ItemIcon
Width="52"
Height="52"
Icon="{Binding Icon}"
Quality="{Binding Quality}"/>
</shvcon:BottomTextControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</Grid>
</Flyout>
</AppBarButton.Flyout>
</AppBarButton>
</Grid>
<!-- 各层信息 -->
<ItemsControl
Margin="16,16,0,0"
Margin="16,12,0,0"
ItemTemplate="{StaticResource SpiralAbyssFloorTemplate}"
ItemsSource="{Binding Floors}"/>
</StackPanel>
</ScrollViewer>
</PivotItem>
</Pivot>
</Grid>
</SplitView.Content>
</SplitView>
</SplitView.Content>
</SplitView>
</PivotItem>
<PivotItem Header="{shcm:ResourceString Name=ViewSpiralAbyssHutaoStatistics}">
<Grid DataContext="{Binding HutaoDatabaseViewModel}">
<mxi:Interaction.Behaviors>
<shcb:InvokeCommandOnLoadedBehavior Command="{Binding OpenUICommand}"/>
</mxi:Interaction.Behaviors>
<Grid.Resources>
<DataTemplate x:Key="TeamItemTemplate" d:DataType="shvcom:Team">
<Border Margin="0,0,0,8" Style="{StaticResource BorderCardStyle}">
<Viewbox Stretch="Uniform">
<Grid Margin="6">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="120"/>
</Grid.ColumnDefinitions>
<ItemsControl
MinWidth="210"
HorizontalAlignment="Left"
ItemsSource="{Binding}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" Spacing="6"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<shvcon:ItemIcon
Width="48"
Height="48"
Icon="{Binding Icon}"
Quality="{Binding Quality}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<TextBlock
Grid.Column="1"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{Binding Rate}"/>
</Grid>
</Viewbox>
</Border>
</DataTemplate>
<DataTemplate x:Key="RatedAvatarTemplate" x:DataType="shvcom:AvatarView">
<shvcon:BottomTextControl Text="{Binding Rate}">
<shvcon:ItemIcon Icon="{Binding Icon}" Quality="{Binding Quality}"/>
</shvcon:BottomTextControl>
</DataTemplate>
</Grid.Resources>
<Pivot Visibility="{Binding Overview, Converter={StaticResource EmptyObjectToVisibilityConverter}}">
<Pivot.RightHeader>
<CommandBar DefaultLabelPosition="Right">
<AppBarButton Icon="{shcm:FontIcon Glyph=&#xE946;}" Label="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverview}">
<AppBarButton.Flyout>
<Flyout Placement="BottomEdgeAlignedRight">
<StackPanel
MinWidth="260"
Margin="0,-29,0,0"
Spacing="{StaticResource SettingsCardSpacing}">
<StackPanel.Resources>
<Thickness x:Key="SettingsCardPadding">16</Thickness>
<x:Double x:Key="SettingsCardWrapThreshold">0</x:Double>
<x:Double x:Key="SettingsCardWrapNoIconThreshold">0</x:Double>
<x:Double x:Key="SettingsCardMinHeight">0</x:Double>
</StackPanel.Resources>
<TextBlock Style="{StaticResource SettingsSectionHeaderTextBlockStyle}" Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewDataCollect}"/>
<cwc:SettingsCard Content="{Binding Overview.RefreshTime}" Header="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewRefreshTime}"/>
<cwc:SettingsCard Content="{Binding Overview.RecordTotal}" Header="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewRecordTotal}"/>
<TextBlock Style="{StaticResource SettingsSectionHeaderTextBlockStyle}" Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewSpiralAbyss}"/>
<cwc:SettingsCard Content="{Binding Overview.SpiralAbyssTotal}" Header="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewSpiralAbyssTotal}"/>
<cwc:SettingsCard Padding="16,8" Header="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewSpiralAbyssPassed}">
<StackPanel>
<TextBlock Text="{Binding Overview.SpiralAbyssPassedPercent}"/>
<TextBlock
HorizontalAlignment="Right"
Opacity="0.7"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{Binding Overview.SpiralAbyssPassed}"/>
</StackPanel>
</cwc:SettingsCard>
<cwc:SettingsCard Padding="16,8" Header="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewSpiralAbyssFullStar}">
<StackPanel>
<TextBlock Text="{Binding Overview.SpiralAbyssFullStarPercent}"/>
<TextBlock
HorizontalAlignment="Right"
Opacity="0.7"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{Binding Overview.SpiralAbyssFullStar}"/>
</StackPanel>
</cwc:SettingsCard>
<cwc:SettingsCard Content="{Binding Overview.SpiralAbyssStarAverage}" Header="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewSpiralAbyssStarAverage}"/>
<cwc:SettingsCard Content="{Binding Overview.SpiralAbyssBattleAverage}" Header="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewSpiralAbyssBattleAverage}"/>
</StackPanel>
</Flyout>
</AppBarButton.Flyout>
</AppBarButton>
</CommandBar>
</Pivot.RightHeader>
<PivotItem Header="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewAvatarUsageRank}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Margin="16,6,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<cwc:Segmented
DisplayMemberPath="Floor"
ItemsSource="{Binding AvatarUsageRanks}"
SelectedItem="{Binding SelectedAvatarUsageRank, Mode=TwoWay}"/>
<TextBlock
Grid.Column="1"
Margin="12,0,0,0"
VerticalAlignment="Center"
Text="{shcm:ResourceString Name=ViewSpiralAbyssAvatarUsageRankDescription}"/>
</Grid>
<GridView
Grid.Row="1"
Padding="16,16,4,0"
DataContext="{Binding SelectedAvatarUsageRank}"
ItemContainerStyle="{StaticResource LargeGridViewItemStyle}"
ItemTemplate="{StaticResource RatedAvatarTemplate}"
ItemsSource="{Binding Avatars}"
SelectionMode="None"/>
</Grid>
</PivotItem>
<PivotItem Header="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewAvatarAppearanceRank}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Margin="16,6,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<cwc:Segmented
DisplayMemberPath="Floor"
ItemsSource="{Binding AvatarAppearanceRanks}"
SelectedItem="{Binding SelectedAvatarAppearanceRank, Mode=TwoWay}"/>
<TextBlock
Grid.Column="1"
Margin="12,0,0,0"
VerticalAlignment="Center"
Text="{shcm:ResourceString Name=ViewSpiralAbyssAvatarAppearanceRankDescription}"/>
</Grid>
<GridView
Grid.Row="1"
Padding="16,16,4,0"
DataContext="{Binding SelectedAvatarAppearanceRank}"
ItemContainerStyle="{StaticResource LargeGridViewItemStyle}"
ItemTemplate="{StaticResource RatedAvatarTemplate}"
ItemsSource="{Binding Avatars}"
SelectionMode="None"/>
</Grid>
</PivotItem>
<PivotItem Header="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewTeamAppearance}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<cwc:Segmented
Grid.Row="0"
Margin="16,6,0,0"
DisplayMemberPath="Floor"
ItemsSource="{Binding TeamAppearances}"
SelectedItem="{Binding SelectedTeamAppearance, Mode=TwoWay}"/>
<Grid
Grid.Row="1"
ColumnSpacing="8"
DataContext="{Binding SelectedTeamAppearance}">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<ListView
Grid.Column="0"
Padding="0,8,0,0"
ItemTemplate="{StaticResource TeamItemTemplate}"
ItemsSource="{Binding Up}"
SelectionMode="None"/>
<ListView
Grid.Column="1"
Padding="0,8,0,0"
ItemTemplate="{StaticResource TeamItemTemplate}"
ItemsSource="{Binding Down}"
SelectionMode="None"/>
</Grid>
</Grid>
</PivotItem>
<PivotItem Header="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewAvatarConstellation}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid Margin="16,0,16,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="48"/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock
Grid.Column="0"
Margin="6"
HorizontalAlignment="Center"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewConstellationAvatar}"/>
<TextBlock
Grid.Column="1"
Margin="6"
HorizontalAlignment="Center"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewConstellationHolding}"/>
<TextBlock
Grid.Column="2"
Margin="6"
HorizontalAlignment="Center"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewConstellation0}"/>
<TextBlock
Grid.Column="3"
Margin="6"
HorizontalAlignment="Center"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewConstellation1}"/>
<TextBlock
Grid.Column="4"
Margin="6"
HorizontalAlignment="Center"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewConstellation2}"/>
<TextBlock
Grid.Column="5"
Margin="6"
HorizontalAlignment="Center"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewConstellation3}"/>
<TextBlock
Grid.Column="6"
Margin="6"
HorizontalAlignment="Center"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewConstellation4}"/>
<TextBlock
Grid.Column="7"
Margin="6"
HorizontalAlignment="Center"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewConstellation5}"/>
<TextBlock
Grid.Column="8"
Margin="6"
HorizontalAlignment="Center"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewConstellation6}"/>
</Grid>
<ListView
Grid.Row="1"
Margin="0,0,4,0"
HorizontalContentAlignment="Stretch"
ItemsPanel="{StaticResource ItemsStackPanelTemplate}"
ItemsSource="{Binding AvatarConstellationInfos}"
SelectionMode="None">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Margin="0,0,0,8" Style="{StaticResource BorderCardStyle}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<shvcon:ItemIcon
Width="48"
Height="48"
Icon="{Binding Icon}"
Quality="{Binding Quality}"/>
<Grid Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="7*"/>
</Grid.ColumnDefinitions>
<TextBlock
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{Binding Rate}"/>
<ItemsControl Grid.Column="1" ItemsSource="{Binding Rates}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<cwc:UniformGrid Columns="7"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{Binding}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</Grid>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ListView>
</Grid>
</PivotItem>
</Pivot>
<shvcon:LoadingView IsLoading="{Binding Overview, Converter={StaticResource EmptyObjectToBoolRevertConverter}}"/>
</Grid>
</PivotItem>
</Pivot>
</Grid>
</shc:ScopedPage>

View File

@@ -23,17 +23,24 @@ internal sealed partial class HutaoDatabaseViewModel : Abstraction.ViewModel
private List<AvatarConstellationInfoView>? avatarConstellationInfos;
private List<TeamAppearanceView>? teamAppearances;
private Overview? overview;
private AvatarRankView? selectedAvatarUsageRank;
private AvatarRankView? selectedAvatarAppearanceRank;
private TeamAppearanceView? selectedTeamAppearance;
/// <summary>
/// 角色使用率
/// </summary>
public List<AvatarRankView>? AvatarUsageRanks { get => avatarUsageRanks; set => SetProperty(ref avatarUsageRanks, value); }
public AvatarRankView? SelectedAvatarUsageRank { get => selectedAvatarUsageRank; set => SetProperty(ref selectedAvatarUsageRank, value); }
/// <summary>
/// 角色上场率
/// </summary>
public List<AvatarRankView>? AvatarAppearanceRanks { get => avatarAppearanceRanks; set => SetProperty(ref avatarAppearanceRanks, value); }
public AvatarRankView? SelectedAvatarAppearanceRank { get => selectedAvatarAppearanceRank; set => SetProperty(ref selectedAvatarAppearanceRank, value); }
/// <summary>
/// 角色命座信息
/// </summary>
@@ -44,6 +51,8 @@ internal sealed partial class HutaoDatabaseViewModel : Abstraction.ViewModel
/// </summary>
public List<TeamAppearanceView>? TeamAppearances { get => teamAppearances; set => SetProperty(ref teamAppearances, value); }
public TeamAppearanceView? SelectedTeamAppearance { get => selectedTeamAppearance; set => SetProperty(ref selectedTeamAppearance, value); }
/// <summary>
/// 总览数据
/// </summary>
@@ -56,9 +65,15 @@ internal sealed partial class HutaoDatabaseViewModel : Abstraction.ViewModel
{
await taskContext.SwitchToMainThreadAsync();
AvatarAppearanceRanks = hutaoCache.AvatarAppearanceRanks;
SelectedAvatarAppearanceRank = AvatarAppearanceRanks?.FirstOrDefault();
AvatarUsageRanks = hutaoCache.AvatarUsageRanks;
AvatarConstellationInfos = hutaoCache.AvatarConstellationInfos;
SelectedAvatarUsageRank = AvatarUsageRanks?.FirstOrDefault();
TeamAppearances = hutaoCache.TeamAppearances;
SelectedTeamAppearance = TeamAppearances?.FirstOrDefault();
AvatarConstellationInfos = hutaoCache.AvatarConstellationInfos;
Overview = hutaoCache.Overview;
}
}

View File

@@ -6,6 +6,7 @@ using Snap.Hutao.Message;
using Snap.Hutao.Service.Notification;
using Snap.Hutao.Service.SpiralAbyss;
using Snap.Hutao.Service.User;
using Snap.Hutao.ViewModel.Complex;
using Snap.Hutao.ViewModel.User;
using Snap.Hutao.Web.Hutao.SpiralAbyss;
using Snap.Hutao.Web.Hutao.SpiralAbyss.Post;
@@ -26,6 +27,7 @@ internal sealed partial class SpiralAbyssRecordViewModel : Abstraction.ViewModel
private readonly IInfoBarService infoBarService;
private readonly ITaskContext taskContext;
private readonly IUserService userService;
private readonly HutaoDatabaseViewModel hutaoDatabaseViewModel;
private ObservableCollection<SpiralAbyssView>? spiralAbyssEntries;
private SpiralAbyssView? selectedView;
@@ -40,6 +42,8 @@ internal sealed partial class SpiralAbyssRecordViewModel : Abstraction.ViewModel
/// </summary>
public SpiralAbyssView? SelectedView { get => selectedView; set => SetProperty(ref selectedView, value); }
public HutaoDatabaseViewModel HutaoDatabaseViewModel { get => hutaoDatabaseViewModel; }
/// <inheritdoc/>
public void Receive(UserChangedMessage message)
{