replace with standardview

This commit is contained in:
DismissedLight
2024-07-04 13:42:08 +08:00
parent 96ed31c09e
commit 4ba819ce3b
14 changed files with 503 additions and 466 deletions

View File

@@ -23,9 +23,9 @@ internal sealed class AdvancedDbCollectionView<TEntity> : AdvancedCollectionView
this.serviceProvider = serviceProvider;
}
public IDisposable SuppressSavingToDatabase()
public IDisposable SuppressChangeCurrentItem()
{
return new SavingToDatabaseSuppression(this);
return new CurrentItemSuppression(this);
}
protected override void OnCurrentChangedOverride()
@@ -54,18 +54,21 @@ internal sealed class AdvancedDbCollectionView<TEntity> : AdvancedCollectionView
}
}
private sealed class SavingToDatabaseSuppression : IDisposable
private sealed class CurrentItemSuppression : IDisposable
{
private readonly AdvancedDbCollectionView<TEntity> view;
private readonly TEntity? currentItem;
public SavingToDatabaseSuppression(AdvancedDbCollectionView<TEntity> view)
public CurrentItemSuppression(AdvancedDbCollectionView<TEntity> view)
{
this.view = view;
currentItem = view.CurrentItem;
view.savingToDatabase = false;
}
public void Dispose()
{
view.MoveCurrentTo(currentItem);
view.savingToDatabase = true;
}
}
@@ -87,9 +90,9 @@ internal sealed class AdvancedDbCollectionView<TEntityAccess, TEntity> : Advance
this.serviceProvider = serviceProvider;
}
public IDisposable SuppressSavingToDatabase()
public IDisposable SuppressChangeCurrentItem()
{
return new SavingToDatabaseSuppression(this);
return new CurrentItemSuppression(this);
}
protected override void OnCurrentChangedOverride()
@@ -118,18 +121,21 @@ internal sealed class AdvancedDbCollectionView<TEntityAccess, TEntity> : Advance
}
}
private sealed class SavingToDatabaseSuppression : IDisposable
private sealed class CurrentItemSuppression : IDisposable
{
private readonly AdvancedDbCollectionView<TEntityAccess, TEntity> view;
private readonly TEntityAccess? currentItem;
public SavingToDatabaseSuppression(AdvancedDbCollectionView<TEntityAccess, TEntity> view)
public CurrentItemSuppression(AdvancedDbCollectionView<TEntityAccess, TEntity> view)
{
this.view = view;
currentItem = view.CurrentItem;
view.savingToDatabase = false;
}
public void Dispose()
{
view.MoveCurrentTo(currentItem);
view.savingToDatabase = true;
}
}

View File

@@ -8,5 +8,5 @@ namespace Snap.Hutao.Core.Database;
internal interface IAdvancedDbCollectionView<TEntity> : IAdvancedCollectionView<TEntity>
where TEntity : class
{
IDisposable SuppressSavingToDatabase();
IDisposable SuppressChangeCurrentItem();
}

View File

@@ -117,12 +117,9 @@ internal sealed class UniformStaggeredLayoutState
internal void RecycleElements()
{
if (context.ItemCount > 0)
for (int i = 0; i < context.ItemCount; i++)
{
for (int i = 0; i < items.Count; i++)
{
RecycleElementAt(i);
}
RecycleElementAt(i);
}
}

View File

@@ -41,7 +41,7 @@ internal sealed class WrapLayoutState
public void Clear()
{
for (int i = 0; i < items.Count; i++)
for (int i = 0; i < context.ItemCount; i++)
{
RecycleElementAt(i);
}

View File

@@ -491,7 +491,7 @@
</ResourceDictionary>
</Page.Resources>
<shuxc:StandardView ShowCondition="{Binding Summary, Converter={StaticResource EmptyObjectToBoolConverter}}">
<shuxc:StandardView HideCondition="{Binding IsInitialized, Converter={StaticResource BoolNegationConverter}}" ShowCondition="{Binding Summary, Converter={StaticResource EmptyObjectToBoolConverter}}">
<shuxc:StandardView.EmptyContent>
<Border
HorizontalAlignment="Center"
@@ -753,14 +753,6 @@
</Grid>
</StackPanel>
<ItemsControl
Grid.Row="1"
Grid.Column="0"
Margin="16"
ItemTemplate="{StaticResource AvatarConstellationTemplate}"
ItemsPanel="{StaticResource HorizontalStackPanelSpacing0Template}"
ItemsSource="{Binding SelectedAvatar.Constellations}"/>
<StackPanel Grid.Column="1" Margin="16">
<TextBlock
HorizontalAlignment="Right"
@@ -794,6 +786,14 @@
VerticalAlignment="Bottom"
ItemTemplate="{StaticResource AvatarSkillTemplate}"
ItemsSource="{Binding SelectedAvatar.Skills}"/>
<ItemsControl
Grid.Row="1"
Grid.Column="0"
Margin="16"
ItemTemplate="{StaticResource AvatarConstellationTemplate}"
ItemsPanel="{StaticResource HorizontalStackPanelSpacing0Template}"
ItemsSource="{Binding SelectedAvatar.Constellations}"/>
</Grid>
</Border>

View File

@@ -260,150 +260,8 @@
<shuxb:InvokeCommandOnLoadedBehavior Command="{Binding LoadCommand}"/>
</mxi:Interaction.Behaviors>
<Grid Visibility="{Binding IsInitialized, Converter={StaticResource BoolToVisibilityConverter}}">
<Grid Visibility="{Binding Projects.Count, Converter={StaticResource Int32ToVisibilityConverter}}">
<Pivot Style="{ThemeResource CardPivotStyle}">
<Pivot.RightHeader>
<CommandBar DefaultLabelPosition="Right">
<AppBarElementContainer>
<shuxc:SizeRestrictedContentControl Margin="6,6,6,6">
<ComboBox
DisplayMemberPath="Name"
ItemsSource="{Binding Projects}"
SelectedItem="{Binding Projects.CurrentItem, Mode=TwoWay}"
Style="{ThemeResource CommandBarComboBoxStyle}"/>
</shuxc:SizeRestrictedContentControl>
</AppBarElementContainer>
<AppBarButton
Command="{Binding RefreshInventoryCommand}"
Icon="{shuxm:FontIcon Glyph=&#xE72C;}"
Label="{shuxm:ResourceString Name=ViewPageCultivationRefreshInventory}"/>
<AppBarButton
Command="{Binding AddProjectCommand}"
Icon="{shuxm:FontIcon Glyph=&#xE710;}"
Label="{shuxm:ResourceString Name=ViewPageCultivationAddProject}"/>
<AppBarButton
Command="{Binding RemoveProjectCommand}"
CommandParameter="{Binding Projects.CurrentItem, Mode=OneWay}"
Icon="{shuxm:FontIcon Glyph=&#xE74D;}"
Label="{shuxm:ResourceString Name=ViewPageCultivationRemoveProject}"/>
</CommandBar>
</Pivot.RightHeader>
<PivotItem Header="{shuxm:ResourceString Name=ViewPageCultivationMaterialList}">
<Grid>
<Pivot Style="{ThemeResource CardPivotStyle}" Visibility="{Binding CultivateEntries.Count, Converter={StaticResource Int32ToVisibilityConverter}}">
<PivotItem Header="{shuxm:ResourceString Name=ViewPageCultivationCultivateEntry}">
<ScrollViewer Padding="0,0">
<ItemsRepeater
Margin="16,16,16,0"
ItemTemplate="{StaticResource CultivateEntryTemplate}"
ItemsSource="{Binding CultivateEntries}">
<ItemsRepeater.Layout>
<shuxcl:UniformStaggeredLayout
MinColumnSpacing="12"
MinItemWidth="300"
MinRowSpacing="-4"/>
</ItemsRepeater.Layout>
</ItemsRepeater>
</ScrollViewer>
</PivotItem>
<PivotItem Header="{shuxm:ResourceString Name=ViewPageCultivationMaterialStatistics}">
<Border Margin="16" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
<Border Style="{ThemeResource AcrylicBorderCardStyle}">
<ScrollViewer Padding="16,0">
<ItemsRepeater
Margin="0,16,0,0"
ItemTemplate="{StaticResource StatisticsItemTemplate}"
ItemsSource="{Binding StatisticsItems}">
<ItemsRepeater.Layout>
<UniformGridLayout
ItemsJustification="Start"
ItemsStretch="Fill"
MinColumnSpacing="12"
MinItemWidth="240"
MinRowSpacing="-4"/>
</ItemsRepeater.Layout>
</ItemsRepeater>
</ScrollViewer>
</Border>
</Border>
</PivotItem>
</Pivot>
<Border Visibility="{Binding CultivateEntries.Count, Converter={StaticResource Int32ToVisibilityRevertConverter}}">
<Border
HorizontalAlignment="Center"
VerticalAlignment="Center"
cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
<Border
MinWidth="480"
Padding="16"
Style="{ThemeResource AcrylicBorderCardStyle}">
<StackPanel 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>
<shuxci:CachedImage
Height="120"
Margin="0,0,0,16"
Source="{StaticResource UI_EmotionIcon433}"/>
<cwcont:SettingsCard
ActionIconToolTip="{shuxm:ResourceString Name=ViewPageCultivationNavigateAction}"
Command="{Binding NavigateToPageCommand}"
CommandParameter="Snap.Hutao.UI.Xaml.View.Page.WikiAvatarPage"
Description="{shuxm:ResourceString Name=ViewPageCultivationWikiAvatarDescription}"
Header="{shuxm:ResourceString Name=ViewWikiAvatarHeader}"
HeaderIcon="{shuxm:BitmapIcon Source=ms-appx:///Resource/Navigation/WikiAvatar.png}"
IsClickEnabled="True"/>
<cwcont:SettingsCard
ActionIconToolTip="{shuxm:ResourceString Name=ViewPageCultivationNavigateAction}"
Command="{Binding NavigateToPageCommand}"
CommandParameter="Snap.Hutao.UI.Xaml.View.Page.WikiWeaponPage"
Description="{shuxm:ResourceString Name=ViewPageCultivationWikiWeaponDescription}"
Header="{shuxm:ResourceString Name=ViewWikiWeaponHeader}"
HeaderIcon="{shuxm:BitmapIcon Source=ms-appx:///Resource/Navigation/WikiWeapon.png}"
IsClickEnabled="True"/>
<cwcont:SettingsCard
ActionIconToolTip="{shuxm:ResourceString Name=ViewPageCultivationNavigateAction}"
Command="{Binding NavigateToPageCommand}"
CommandParameter="Snap.Hutao.UI.Xaml.View.Page.AvatarPropertyPage"
Description="{shuxm:ResourceString Name=ViewPageCultivationAvatarPropertyDescription}"
Header="{shuxm:ResourceString Name=ViewAvatarPropertyHeader}"
HeaderIcon="{shuxm:BitmapIcon Source=ms-appx:///Resource/Navigation/Cultivation.png}"
IsClickEnabled="True"/>
</StackPanel>
</Border>
</Border>
</Border>
</Grid>
</PivotItem>
<PivotItem Header="{shuxm:ResourceString Name=ViewPageCultivationInventoryItem}">
<Border Margin="16" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
<Border Style="{ThemeResource AcrylicBorderCardStyle}">
<!-- Add a ScrollView for smooth scrolling -->
<ScrollView HorizontalScrollBarVisibility="Hidden">
<ScrollViewer HorizontalScrollBarVisibility="Disabled">
<ItemsRepeater
Margin="16"
ItemTemplate="{StaticResource InventoryItemTemplate}"
ItemsSource="{Binding InventoryItems}">
<ItemsRepeater.Layout>
<shuxcl:WrapLayout HorizontalSpacing="12" VerticalSpacing="12"/>
</ItemsRepeater.Layout>
</ItemsRepeater>
</ScrollViewer>
</ScrollView>
</Border>
</Border>
</PivotItem>
</Pivot>
</Grid>
<Grid Visibility="{Binding Projects.Count, Converter={StaticResource Int32ToVisibilityRevertConverter}}">
<shuxc:StandardView HideCondition="{Binding IsInitialized, Converter={StaticResource BoolNegationConverter}}" ShowCondition="{Binding Projects.Count, Converter={StaticResource Int32ToBoolConverter}}">
<shuxc:StandardView.EmptyContent>
<Border
HorizontalAlignment="Center"
VerticalAlignment="Center"
@@ -434,6 +292,145 @@
</StackPanel>
</Border>
</Border>
</Grid>
</Grid>
</shuxc:StandardView.EmptyContent>
<Pivot Style="{ThemeResource CardPivotStyle}">
<Pivot.RightHeader>
<CommandBar DefaultLabelPosition="Right">
<AppBarElementContainer>
<shuxc:SizeRestrictedContentControl Margin="6,6,6,6">
<ComboBox
DisplayMemberPath="Name"
ItemsSource="{Binding Projects}"
SelectedItem="{Binding Projects.CurrentItem, Mode=TwoWay}"
Style="{ThemeResource CommandBarComboBoxStyle}"/>
</shuxc:SizeRestrictedContentControl>
</AppBarElementContainer>
<AppBarButton
Command="{Binding RefreshInventoryCommand}"
Icon="{shuxm:FontIcon Glyph=&#xE72C;}"
Label="{shuxm:ResourceString Name=ViewPageCultivationRefreshInventory}"/>
<AppBarButton
Command="{Binding AddProjectCommand}"
Icon="{shuxm:FontIcon Glyph=&#xE710;}"
Label="{shuxm:ResourceString Name=ViewPageCultivationAddProject}"/>
<AppBarButton
Command="{Binding RemoveProjectCommand}"
CommandParameter="{Binding Projects.CurrentItem, Mode=OneWay}"
Icon="{shuxm:FontIcon Glyph=&#xE74D;}"
Label="{shuxm:ResourceString Name=ViewPageCultivationRemoveProject}"/>
</CommandBar>
</Pivot.RightHeader>
<PivotItem Header="{shuxm:ResourceString Name=ViewPageCultivationMaterialList}">
<shuxc:StandardView HideCondition="{Binding EntriesUpdating}" ShowCondition="{Binding CultivateEntries.Count, Converter={StaticResource Int32ToBoolConverter}}">
<shuxc:StandardView.EmptyContent>
<Border
HorizontalAlignment="Center"
VerticalAlignment="Center"
cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
<Border
MinWidth="480"
Padding="16"
Style="{ThemeResource AcrylicBorderCardStyle}">
<StackPanel 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>
<shuxci:CachedImage
Height="120"
Margin="0,0,0,16"
Source="{StaticResource UI_EmotionIcon433}"/>
<cwcont:SettingsCard
ActionIconToolTip="{shuxm:ResourceString Name=ViewPageCultivationNavigateAction}"
Command="{Binding NavigateToPageCommand}"
CommandParameter="Snap.Hutao.UI.Xaml.View.Page.WikiAvatarPage"
Description="{shuxm:ResourceString Name=ViewPageCultivationWikiAvatarDescription}"
Header="{shuxm:ResourceString Name=ViewWikiAvatarHeader}"
HeaderIcon="{shuxm:BitmapIcon Source=ms-appx:///Resource/Navigation/WikiAvatar.png}"
IsClickEnabled="True"/>
<cwcont:SettingsCard
ActionIconToolTip="{shuxm:ResourceString Name=ViewPageCultivationNavigateAction}"
Command="{Binding NavigateToPageCommand}"
CommandParameter="Snap.Hutao.UI.Xaml.View.Page.WikiWeaponPage"
Description="{shuxm:ResourceString Name=ViewPageCultivationWikiWeaponDescription}"
Header="{shuxm:ResourceString Name=ViewWikiWeaponHeader}"
HeaderIcon="{shuxm:BitmapIcon Source=ms-appx:///Resource/Navigation/WikiWeapon.png}"
IsClickEnabled="True"/>
<cwcont:SettingsCard
ActionIconToolTip="{shuxm:ResourceString Name=ViewPageCultivationNavigateAction}"
Command="{Binding NavigateToPageCommand}"
CommandParameter="Snap.Hutao.UI.Xaml.View.Page.AvatarPropertyPage"
Description="{shuxm:ResourceString Name=ViewPageCultivationAvatarPropertyDescription}"
Header="{shuxm:ResourceString Name=ViewAvatarPropertyHeader}"
HeaderIcon="{shuxm:BitmapIcon Source=ms-appx:///Resource/Navigation/Cultivation.png}"
IsClickEnabled="True"/>
</StackPanel>
</Border>
</Border>
</shuxc:StandardView.EmptyContent>
<Pivot Style="{ThemeResource CardPivotStyle}">
<PivotItem Header="{shuxm:ResourceString Name=ViewPageCultivationCultivateEntry}">
<ScrollViewer Padding="0,0">
<ItemsRepeater
Margin="16,16,16,0"
ItemTemplate="{StaticResource CultivateEntryTemplate}"
ItemsSource="{Binding CultivateEntries}">
<ItemsRepeater.Layout>
<shuxcl:UniformStaggeredLayout
MinColumnSpacing="12"
MinItemWidth="300"
MinRowSpacing="-4"/>
</ItemsRepeater.Layout>
</ItemsRepeater>
</ScrollViewer>
</PivotItem>
<PivotItem Header="{shuxm:ResourceString Name=ViewPageCultivationMaterialStatistics}">
<Border Margin="16" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
<Border Style="{ThemeResource AcrylicBorderCardStyle}">
<ScrollViewer Padding="16,0">
<ItemsRepeater
Margin="0,16,0,0"
ItemTemplate="{StaticResource StatisticsItemTemplate}"
ItemsSource="{Binding StatisticsItems}">
<ItemsRepeater.Layout>
<UniformGridLayout
ItemsJustification="Start"
ItemsStretch="Fill"
MinColumnSpacing="12"
MinItemWidth="240"
MinRowSpacing="-4"/>
</ItemsRepeater.Layout>
</ItemsRepeater>
</ScrollViewer>
</Border>
</Border>
</PivotItem>
</Pivot>
</shuxc:StandardView>
</PivotItem>
<PivotItem Header="{shuxm:ResourceString Name=ViewPageCultivationInventoryItem}">
<Border Margin="16" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
<Border Style="{ThemeResource AcrylicBorderCardStyle}">
<!-- Add a ScrollView for smooth scrolling -->
<ScrollView HorizontalScrollBarVisibility="Hidden">
<ScrollViewer HorizontalScrollBarVisibility="Disabled">
<ItemsRepeater
Margin="16"
ItemTemplate="{StaticResource InventoryItemTemplate}"
ItemsSource="{Binding InventoryItems}">
<ItemsRepeater.Layout>
<shuxcl:WrapLayout HorizontalSpacing="12" VerticalSpacing="12"/>
</ItemsRepeater.Layout>
</ItemsRepeater>
</ScrollViewer>
</ScrollView>
</Border>
</Border>
</PivotItem>
</Pivot>
</shuxc:StandardView>
</shuxc:ScopedPage>

View File

@@ -235,270 +235,8 @@
</DataTemplate>
</Page.Resources>
<Grid Visibility="{Binding IsInitialized, Converter={StaticResource BoolToVisibilityConverter}}">
<Grid Visibility="{Binding Statistics, Converter={StaticResource EmptyObjectToVisibilityConverter}}">
<Pivot Style="{ThemeResource CardPivotStyle}">
<Pivot.LeftHeader>
<shuxc:SizeRestrictedContentControl Margin="6,6,0,6">
<ComboBox
DisplayMemberPath="Uid"
ItemsSource="{Binding Archives}"
SelectedItem="{Binding Archives.CurrentItem, Mode=TwoWay}"
Style="{ThemeResource CommandBarComboBoxStyle}"/>
</shuxc:SizeRestrictedContentControl>
</Pivot.LeftHeader>
<Pivot.RightHeader>
<CommandBar DefaultLabelPosition="Right">
<CommandBar.Resources>
<StaticResource x:Key="CommandBarBackgroundOpen" ResourceKey="ControlFillColorTransparentBrush"/>
<Thickness x:Key="CommandBarBorderThicknessOpen">0</Thickness>
</CommandBar.Resources>
<AppBarButton Icon="{shuxm:FontIcon Glyph=&#xE72C;}" Label="{shuxm:ResourceString Name=ViewPageGachaLogRefresh}">
<AppBarButton.Flyout>
<MenuFlyout Placement="Bottom">
<MenuFlyoutItem
Command="{Binding RefreshBySTokenCommand}"
Icon="{shuxm:FontIcon Glyph=&#xE192;}"
Text="{shuxm:ResourceString Name=ViewPageGachaLogRefreshBySToken}"/>
<MenuFlyoutItem
Command="{Binding RefreshByWebCacheCommand}"
Icon="{shuxm:FontIcon Glyph=&#xE81E;}"
Text="{shuxm:ResourceString Name=ViewPageGachaLogRefreshByWebCache}"/>
<MenuFlyoutItem
Command="{Binding RefreshByManualInputCommand}"
Icon="{shuxm:FontIcon Glyph=&#xE765;}"
Text="{shuxm:ResourceString Name=ViewPageGachaLogRefreshByManualInput}"/>
<ToggleMenuFlyoutItem
Icon="{shuxm:FontIcon Glyph=&#xE1CD;}"
IsChecked="{Binding IsAggressiveRefresh, Mode=TwoWay}"
Text="{shuxm:ResourceString Name=ViewPageGachaLogAggressiveRefresh}"/>
</MenuFlyout>
</AppBarButton.Flyout>
</AppBarButton>
<AppBarSeparator/>
<AppBarButton
Flyout="{StaticResource HutaoCloudFlyout}"
Icon="{shuxm:FontIcon Glyph=&#xE753;}"
Label="{shuxm:ResourceString Name=ViewPageGachaLogHutaoCloud}"/>
<AppBarSeparator/>
<AppBarButton
Command="{Binding ImportFromUIGFJsonCommand}"
Icon="{shuxm:FontIcon Glyph=&#xE8B5;}"
Label="{shuxm:ResourceString Name=ViewPageGachaLogImportAction}"/>
<AppBarButton
Command="{Binding ExportToUIGFJsonCommand}"
Icon="{shuxm:FontIcon Glyph=&#xEDE1;}"
Label="{shuxm:ResourceString Name=ViewPageGachaLogExportAction}"/>
<CommandBar.SecondaryCommands>
<AppBarButton
Command="{Binding RemoveArchiveCommand}"
Icon="{shuxm:FontIcon Glyph=&#xE74D;}"
Label="{shuxm:ResourceString Name=ViewPageGachaLogRemoveArchiveAction}"/>
</CommandBar.SecondaryCommands>
</CommandBar>
</Pivot.RightHeader>
<PivotItem Header="{shuxm:ResourceString Name=ViewPageGahcaLogPivotOverview}">
<ScrollViewer
Margin="16,0"
cw:ScrollViewerExtensions.HorizontalScrollBarMargin="0,0,-16,0"
HorizontalScrollBarVisibility="Auto"
HorizontalScrollMode="Enabled"
VerticalScrollMode="Disabled">
<shuxcp:HorizontalEqualPanel
Margin="0,16"
MinItemWidth="302"
Spacing="16">
<shuxvs:StatisticsCard DataContext="{Binding Statistics.AvatarWish}"/>
<shuxvs:StatisticsCard DataContext="{Binding Statistics.WeaponWish}"/>
<shuxvs:StatisticsCard DataContext="{Binding Statistics.StandardWish}" ShowUpPull="False"/>
<shuxvs:StatisticsCard DataContext="{Binding Statistics.ChronicledWish}" ShowUpPull="False"/>
</shuxcp:HorizontalEqualPanel>
</ScrollViewer>
</PivotItem>
<PivotItem Header="{shuxm:ResourceString Name=ViewPageGahcaLogPivotHistory}">
<Border Margin="16" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
<Border Style="{ThemeResource AcrylicBorderCardStyle}">
<SplitView
DisplayMode="Inline"
IsPaneOpen="True"
OpenPaneLength="408"
PaneBackground="{ThemeResource CardBackgroundFillColorSecondaryBrush}">
<SplitView.Pane>
<ListView
Padding="{ThemeResource ListViewInSplitPanePadding}"
ItemTemplate="{StaticResource HistoryWishListTemplate}"
ItemsSource="{Binding Statistics.HistoryWishes}"
SelectedItem="{Binding Statistics.HistoryWishes.CurrentItem, Mode=TwoWay}"/>
</SplitView.Pane>
<SplitView.Content>
<ScrollViewer>
<StackPanel>
<Border
Margin="16"
HorizontalAlignment="Left"
cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
<Grid HorizontalAlignment="Center" Style="{StaticResource AcrylicGridCardStyle}">
<cwcont:ConstrainedBox AspectRatio="1080:533">
<shuxci:CachedImage
HorizontalAlignment="Center"
VerticalAlignment="Center"
CornerRadius="{ThemeResource ControlCornerRadius}"
Source="{Binding Statistics.HistoryWishes.CurrentItem.BannerImage}"
Stretch="UniformToFill"/>
</cwcont:ConstrainedBox>
<Border
Grid.ColumnSpan="2"
Background="{ThemeResource DarkOnlyOverlayMaskColorBrush}"
IsHitTestVisible="False"/>
</Grid>
</Border>
<StackPanel Margin="16,0,0,0" Spacing="8">
<TextBlock
Margin="0,8,0,0"
Style="{StaticResource BaseTextBlockStyle}"
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardOrangeText}"
Visibility="{Binding Statistics.HistoryWishes.CurrentItem.OrangeList.Count, Converter={StaticResource Int32ToVisibilityConverter}}"/>
<GridView
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
ItemsSource="{Binding Statistics.HistoryWishes.CurrentItem.OrangeList}"
SelectionMode="None"/>
<TextBlock
Margin="0,8,0,0"
Style="{StaticResource BaseTextBlockStyle}"
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardPurpleText}"
Visibility="{Binding Statistics.HistoryWishes.CurrentItem.PurpleList.Count, Converter={StaticResource Int32ToVisibilityConverter}}"/>
<GridView
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
ItemsSource="{Binding Statistics.HistoryWishes.CurrentItem.PurpleList}"
SelectionMode="None"/>
<TextBlock
Margin="0,8,0,0"
Style="{StaticResource BaseTextBlockStyle}"
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardBlueText}"
Visibility="{Binding Statistics.HistoryWishes.CurrentItem.BlueList.Count, Converter={StaticResource Int32ToVisibilityConverter}}"/>
<GridView
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
ItemsSource="{Binding Statistics.HistoryWishes.CurrentItem.BlueList}"
SelectionMode="None"/>
</StackPanel>
</StackPanel>
</ScrollViewer>
</SplitView.Content>
</SplitView>
</Border>
</Border>
</PivotItem>
<PivotItem Header="{shuxm:ResourceString Name=ViewPageGahcaLogPivotAvatar}">
<ScrollViewer>
<StackPanel Margin="16,0,16,16">
<Border Margin="0,16,0,0" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
<Border Padding="16,16,12,4" Style="{ThemeResource AcrylicBorderCardStyle}">
<StackPanel Spacing="8">
<TextBlock
Foreground="{ThemeResource OrangeColorBrush}"
Style="{StaticResource BaseTextBlockStyle}"
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardOrangeText}"/>
<GridView
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
ItemsSource="{Binding Statistics.OrangeAvatars}"
SelectionMode="None"/>
</StackPanel>
</Border>
</Border>
<Border Margin="0,16,0,0" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
<Border Padding="16,16,12,4" Style="{ThemeResource AcrylicBorderCardStyle}">
<StackPanel Spacing="8">
<TextBlock
Foreground="{ThemeResource PurpleColorBrush}"
Style="{StaticResource BaseTextBlockStyle}"
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardPurpleText}"/>
<GridView
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
ItemsSource="{Binding Statistics.PurpleAvatars}"
SelectionMode="None"/>
</StackPanel>
</Border>
</Border>
</StackPanel>
</ScrollViewer>
</PivotItem>
<PivotItem Header="{shuxm:ResourceString Name=ViewPageGahcaLogPivotWeapon}">
<ScrollViewer>
<StackPanel Margin="16,0,16,16">
<Border Margin="0,16,0,0" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
<Border Padding="16,16,12,4" Style="{ThemeResource AcrylicBorderCardStyle}">
<StackPanel Spacing="8">
<TextBlock
Foreground="{ThemeResource OrangeColorBrush}"
Style="{StaticResource BaseTextBlockStyle}"
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardOrangeText}"/>
<GridView
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
ItemsSource="{Binding Statistics.OrangeWeapons}"
SelectionMode="None"/>
</StackPanel>
</Border>
</Border>
<Border Margin="0,16,0,0" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
<Border Padding="16,16,12,4" Style="{ThemeResource AcrylicBorderCardStyle}">
<StackPanel Spacing="8">
<TextBlock
Foreground="{ThemeResource PurpleColorBrush}"
Style="{StaticResource BaseTextBlockStyle}"
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardPurpleText}"/>
<GridView
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
ItemsSource="{Binding Statistics.PurpleWeapons}"
SelectionMode="None"/>
</StackPanel>
</Border>
</Border>
<Border Margin="0,16,0,0" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
<Border Padding="16,16,12,4" Style="{ThemeResource AcrylicBorderCardStyle}">
<StackPanel Spacing="8">
<TextBlock
Foreground="{ThemeResource BlueColorBrush}"
Style="{StaticResource BaseTextBlockStyle}"
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardBlueText}"/>
<GridView
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
ItemsSource="{Binding Statistics.BlueWeapons}"
SelectionMode="None"/>
</StackPanel>
</Border>
</Border>
</StackPanel>
</ScrollViewer>
</PivotItem>
<PivotItem Header="{shuxm:ResourceString Name=ViewPageGahcaLogPivotStatistics}">
<Grid>
<shuxc:Loading
Margin="16"
CornerRadius="{ThemeResource ControlCornerRadius}"
IsLoading="{Binding HutaoCloudStatisticsViewModel.IsInitialized, Converter={StaticResource BoolNegationConverter}}"
Style="{ThemeResource DefaultLoadingViewStyle}"/>
<shuxcp:HorizontalEqualPanel
Margin="16"
Spacing="16"
Visibility="{Binding HutaoCloudStatisticsViewModel.IsInitialized, Converter={StaticResource BoolToVisibilityConverter}}">
<mxi:Interaction.Behaviors>
<shuxb:InvokeCommandOnLoadedBehavior Command="{Binding HutaoCloudStatisticsViewModel.LoadCommand}"/>
</mxi:Interaction.Behaviors>
<shuxvs:HutaoStatisticsCard DataContext="{Binding HutaoCloudStatisticsViewModel.Statistics.AvatarEvent}"/>
<shuxvs:HutaoStatisticsCard DataContext="{Binding HutaoCloudStatisticsViewModel.Statistics.AvatarEvent2}"/>
<shuxvs:HutaoStatisticsCard DataContext="{Binding HutaoCloudStatisticsViewModel.Statistics.WeaponEvent}"/>
<shuxvs:HutaoStatisticsCard DataContext="{Binding HutaoCloudStatisticsViewModel.Statistics.Chronicled}" Visibility="{Binding Converter={StaticResource EmptyObjectToVisibilityConverter}, FallbackValue=Collapsed}"/>
</shuxcp:HorizontalEqualPanel>
</Grid>
</PivotItem>
</Pivot>
</Grid>
<Grid Visibility="{Binding Statistics, Converter={StaticResource EmptyObjectToVisibilityRevertConverter}}">
<shuxc:StandardView HideCondition="{Binding IsInitialized, Converter={StaticResource BoolNegationConverter}}" ShowCondition="{Binding Statistics, Converter={StaticResource EmptyObjectToBoolConverter}}">
<shuxc:StandardView.EmptyContent>
<Border
HorizontalAlignment="Center"
VerticalAlignment="Center"
@@ -559,6 +297,266 @@
</StackPanel>
</Border>
</Border>
</Grid>
</Grid>
</shuxc:StandardView.EmptyContent>
<Pivot Style="{ThemeResource CardPivotStyle}">
<Pivot.LeftHeader>
<shuxc:SizeRestrictedContentControl Margin="6,6,0,6">
<ComboBox
DisplayMemberPath="Uid"
ItemsSource="{Binding Archives}"
SelectedItem="{Binding Archives.CurrentItem, Mode=TwoWay}"
Style="{ThemeResource CommandBarComboBoxStyle}"/>
</shuxc:SizeRestrictedContentControl>
</Pivot.LeftHeader>
<Pivot.RightHeader>
<CommandBar DefaultLabelPosition="Right">
<CommandBar.Resources>
<StaticResource x:Key="CommandBarBackgroundOpen" ResourceKey="ControlFillColorTransparentBrush"/>
<Thickness x:Key="CommandBarBorderThicknessOpen">0</Thickness>
</CommandBar.Resources>
<AppBarButton Icon="{shuxm:FontIcon Glyph=&#xE72C;}" Label="{shuxm:ResourceString Name=ViewPageGachaLogRefresh}">
<AppBarButton.Flyout>
<MenuFlyout Placement="Bottom">
<MenuFlyoutItem
Command="{Binding RefreshBySTokenCommand}"
Icon="{shuxm:FontIcon Glyph=&#xE192;}"
Text="{shuxm:ResourceString Name=ViewPageGachaLogRefreshBySToken}"/>
<MenuFlyoutItem
Command="{Binding RefreshByWebCacheCommand}"
Icon="{shuxm:FontIcon Glyph=&#xE81E;}"
Text="{shuxm:ResourceString Name=ViewPageGachaLogRefreshByWebCache}"/>
<MenuFlyoutItem
Command="{Binding RefreshByManualInputCommand}"
Icon="{shuxm:FontIcon Glyph=&#xE765;}"
Text="{shuxm:ResourceString Name=ViewPageGachaLogRefreshByManualInput}"/>
<ToggleMenuFlyoutItem
Icon="{shuxm:FontIcon Glyph=&#xE1CD;}"
IsChecked="{Binding IsAggressiveRefresh, Mode=TwoWay}"
Text="{shuxm:ResourceString Name=ViewPageGachaLogAggressiveRefresh}"/>
</MenuFlyout>
</AppBarButton.Flyout>
</AppBarButton>
<AppBarSeparator/>
<AppBarButton
Flyout="{StaticResource HutaoCloudFlyout}"
Icon="{shuxm:FontIcon Glyph=&#xE753;}"
Label="{shuxm:ResourceString Name=ViewPageGachaLogHutaoCloud}"/>
<AppBarSeparator/>
<AppBarButton
Command="{Binding ImportFromUIGFJsonCommand}"
Icon="{shuxm:FontIcon Glyph=&#xE8B5;}"
Label="{shuxm:ResourceString Name=ViewPageGachaLogImportAction}"/>
<AppBarButton
Command="{Binding ExportToUIGFJsonCommand}"
Icon="{shuxm:FontIcon Glyph=&#xEDE1;}"
Label="{shuxm:ResourceString Name=ViewPageGachaLogExportAction}"/>
<CommandBar.SecondaryCommands>
<AppBarButton
Command="{Binding RemoveArchiveCommand}"
Icon="{shuxm:FontIcon Glyph=&#xE74D;}"
Label="{shuxm:ResourceString Name=ViewPageGachaLogRemoveArchiveAction}"/>
</CommandBar.SecondaryCommands>
</CommandBar>
</Pivot.RightHeader>
<PivotItem Header="{shuxm:ResourceString Name=ViewPageGahcaLogPivotOverview}">
<ScrollViewer
Margin="16,0"
cw:ScrollViewerExtensions.HorizontalScrollBarMargin="0,0,-16,0"
HorizontalScrollBarVisibility="Auto"
HorizontalScrollMode="Enabled"
VerticalScrollMode="Disabled">
<shuxcp:HorizontalEqualPanel
Margin="0,16"
MinItemWidth="302"
Spacing="16">
<shuxvs:StatisticsCard DataContext="{Binding Statistics.AvatarWish}"/>
<shuxvs:StatisticsCard DataContext="{Binding Statistics.WeaponWish}"/>
<shuxvs:StatisticsCard DataContext="{Binding Statistics.StandardWish}" ShowUpPull="False"/>
<shuxvs:StatisticsCard DataContext="{Binding Statistics.ChronicledWish}" ShowUpPull="False"/>
</shuxcp:HorizontalEqualPanel>
</ScrollViewer>
</PivotItem>
<PivotItem Header="{shuxm:ResourceString Name=ViewPageGahcaLogPivotHistory}">
<Border Margin="16" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
<Border Style="{ThemeResource AcrylicBorderCardStyle}">
<SplitView
DisplayMode="Inline"
IsPaneOpen="True"
OpenPaneLength="408"
PaneBackground="{ThemeResource CardBackgroundFillColorSecondaryBrush}">
<SplitView.Pane>
<ListView
Padding="{ThemeResource ListViewInSplitPanePadding}"
ItemTemplate="{StaticResource HistoryWishListTemplate}"
ItemsSource="{Binding Statistics.HistoryWishes}"
SelectedItem="{Binding Statistics.HistoryWishes.CurrentItem, Mode=TwoWay}"/>
</SplitView.Pane>
<SplitView.Content>
<ScrollViewer>
<StackPanel>
<Border
Margin="16"
HorizontalAlignment="Left"
cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
<Grid HorizontalAlignment="Center" Style="{StaticResource AcrylicGridCardStyle}">
<cwcont:ConstrainedBox AspectRatio="1080:533">
<shuxci:CachedImage
HorizontalAlignment="Center"
VerticalAlignment="Center"
CornerRadius="{ThemeResource ControlCornerRadius}"
Source="{Binding Statistics.HistoryWishes.CurrentItem.BannerImage}"
Stretch="UniformToFill"/>
</cwcont:ConstrainedBox>
<Border
Grid.ColumnSpan="2"
Background="{ThemeResource DarkOnlyOverlayMaskColorBrush}"
IsHitTestVisible="False"/>
</Grid>
</Border>
<StackPanel Margin="16,0,0,0" Spacing="8">
<TextBlock
Margin="0,8,0,0"
Style="{StaticResource BaseTextBlockStyle}"
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardOrangeText}"
Visibility="{Binding Statistics.HistoryWishes.CurrentItem.OrangeList.Count, Converter={StaticResource Int32ToVisibilityConverter}}"/>
<GridView
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
ItemsSource="{Binding Statistics.HistoryWishes.CurrentItem.OrangeList}"
SelectionMode="None"/>
<TextBlock
Margin="0,8,0,0"
Style="{StaticResource BaseTextBlockStyle}"
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardPurpleText}"
Visibility="{Binding Statistics.HistoryWishes.CurrentItem.PurpleList.Count, Converter={StaticResource Int32ToVisibilityConverter}}"/>
<GridView
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
ItemsSource="{Binding Statistics.HistoryWishes.CurrentItem.PurpleList}"
SelectionMode="None"/>
<TextBlock
Margin="0,8,0,0"
Style="{StaticResource BaseTextBlockStyle}"
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardBlueText}"
Visibility="{Binding Statistics.HistoryWishes.CurrentItem.BlueList.Count, Converter={StaticResource Int32ToVisibilityConverter}}"/>
<GridView
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
ItemsSource="{Binding Statistics.HistoryWishes.CurrentItem.BlueList}"
SelectionMode="None"/>
</StackPanel>
</StackPanel>
</ScrollViewer>
</SplitView.Content>
</SplitView>
</Border>
</Border>
</PivotItem>
<PivotItem Header="{shuxm:ResourceString Name=ViewPageGahcaLogPivotAvatar}">
<ScrollViewer>
<StackPanel Margin="16,0,16,16">
<Border Margin="0,16,0,0" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
<Border Padding="16,16,12,4" Style="{ThemeResource AcrylicBorderCardStyle}">
<StackPanel Spacing="8">
<TextBlock
Foreground="{ThemeResource OrangeColorBrush}"
Style="{StaticResource BaseTextBlockStyle}"
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardOrangeText}"/>
<GridView
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
ItemsSource="{Binding Statistics.OrangeAvatars}"
SelectionMode="None"/>
</StackPanel>
</Border>
</Border>
<Border Margin="0,16,0,0" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
<Border Padding="16,16,12,4" Style="{ThemeResource AcrylicBorderCardStyle}">
<StackPanel Spacing="8">
<TextBlock
Foreground="{ThemeResource PurpleColorBrush}"
Style="{StaticResource BaseTextBlockStyle}"
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardPurpleText}"/>
<GridView
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
ItemsSource="{Binding Statistics.PurpleAvatars}"
SelectionMode="None"/>
</StackPanel>
</Border>
</Border>
</StackPanel>
</ScrollViewer>
</PivotItem>
<PivotItem Header="{shuxm:ResourceString Name=ViewPageGahcaLogPivotWeapon}">
<ScrollViewer>
<StackPanel Margin="16,0,16,16">
<Border Margin="0,16,0,0" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
<Border Padding="16,16,12,4" Style="{ThemeResource AcrylicBorderCardStyle}">
<StackPanel Spacing="8">
<TextBlock
Foreground="{ThemeResource OrangeColorBrush}"
Style="{StaticResource BaseTextBlockStyle}"
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardOrangeText}"/>
<GridView
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
ItemsSource="{Binding Statistics.OrangeWeapons}"
SelectionMode="None"/>
</StackPanel>
</Border>
</Border>
<Border Margin="0,16,0,0" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
<Border Padding="16,16,12,4" Style="{ThemeResource AcrylicBorderCardStyle}">
<StackPanel Spacing="8">
<TextBlock
Foreground="{ThemeResource PurpleColorBrush}"
Style="{StaticResource BaseTextBlockStyle}"
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardPurpleText}"/>
<GridView
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
ItemsSource="{Binding Statistics.PurpleWeapons}"
SelectionMode="None"/>
</StackPanel>
</Border>
</Border>
<Border Margin="0,16,0,0" cw:Effects.Shadow="{ThemeResource CompatCardShadow}">
<Border Padding="16,16,12,4" Style="{ThemeResource AcrylicBorderCardStyle}">
<StackPanel Spacing="8">
<TextBlock
Foreground="{ThemeResource BlueColorBrush}"
Style="{StaticResource BaseTextBlockStyle}"
Text="{shuxm:ResourceString Name=ViewControlStatisticsCardBlueText}"/>
<GridView
ItemTemplate="{StaticResource HistoryWishGridTemplate}"
ItemsSource="{Binding Statistics.BlueWeapons}"
SelectionMode="None"/>
</StackPanel>
</Border>
</Border>
</StackPanel>
</ScrollViewer>
</PivotItem>
<PivotItem Header="{shuxm:ResourceString Name=ViewPageGahcaLogPivotStatistics}">
<Grid>
<shuxc:Loading
Margin="16"
CornerRadius="{ThemeResource ControlCornerRadius}"
IsLoading="{Binding HutaoCloudStatisticsViewModel.IsInitialized, Converter={StaticResource BoolNegationConverter}}"
Style="{ThemeResource DefaultLoadingViewStyle}"/>
<shuxcp:HorizontalEqualPanel
Margin="16"
Spacing="16"
Visibility="{Binding HutaoCloudStatisticsViewModel.IsInitialized, Converter={StaticResource BoolToVisibilityConverter}}">
<mxi:Interaction.Behaviors>
<shuxb:InvokeCommandOnLoadedBehavior Command="{Binding HutaoCloudStatisticsViewModel.LoadCommand}"/>
</mxi:Interaction.Behaviors>
<shuxvs:HutaoStatisticsCard DataContext="{Binding HutaoCloudStatisticsViewModel.Statistics.AvatarEvent}"/>
<shuxvs:HutaoStatisticsCard DataContext="{Binding HutaoCloudStatisticsViewModel.Statistics.AvatarEvent2}"/>
<shuxvs:HutaoStatisticsCard DataContext="{Binding HutaoCloudStatisticsViewModel.Statistics.WeaponEvent}"/>
<shuxvs:HutaoStatisticsCard DataContext="{Binding HutaoCloudStatisticsViewModel.Statistics.Chronicled}" Visibility="{Binding Converter={StaticResource EmptyObjectToVisibilityConverter}, FallbackValue=Collapsed}"/>
</shuxcp:HorizontalEqualPanel>
</Grid>
</PivotItem>
</Pivot>
</shuxc:StandardView>
</shuxc:ScopedPage>

View File

@@ -300,8 +300,11 @@
</DataTemplate>
</Page.Resources>
<Grid>
<Grid Visibility="{Binding Avatars, Converter={StaticResource EmptyObjectToVisibilityConverter}}">
<shuxc:StandardView ShowCondition="{Binding Avatars, Converter={StaticResource EmptyObjectToBoolConverter}}">
<shuxc:StandardView.EmptyContent>
<shuxc:Loading IsLoading="{Binding Avatars, Converter={StaticResource EmptyObjectToBoolRevertConverter}}" Style="{ThemeResource DefaultLoadingViewStyle}"/>
</shuxc:StandardView.EmptyContent>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition/>
@@ -812,6 +815,6 @@
</cwc:Case>
</cwc:SwitchPresenter>
</Grid>
<shuxc:Loading IsLoading="{Binding Avatars, Converter={StaticResource EmptyObjectToBoolRevertConverter}}" Style="{ThemeResource DefaultLoadingViewStyle}"/>
</Grid>
</shuxc:StandardView>
</shuxc:ScopedPage>

View File

@@ -86,8 +86,11 @@
</DataTemplate>
</Page.Resources>
<Grid>
<Grid Visibility="{Binding Monsters, Converter={StaticResource EmptyObjectToVisibilityConverter}}">
<shuxc:StandardView ShowCondition="{Binding Monsters, Converter={StaticResource EmptyObjectToBoolConverter}}">
<shuxc:StandardView.EmptyContent>
<shuxc:Loading IsLoading="{Binding Monsters, Converter={StaticResource EmptyObjectToBoolRevertConverter}}" Style="{ThemeResource DefaultLoadingViewStyle}"/>
</shuxc:StandardView.EmptyContent>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition/>
@@ -220,6 +223,5 @@
</cwc:Case>
</cwc:SwitchPresenter>
</Grid>
<shuxc:Loading IsLoading="{Binding Monsters, Converter={StaticResource EmptyObjectToBoolRevertConverter}}" Style="{ThemeResource DefaultLoadingViewStyle}"/>
</Grid>
</shuxc:StandardView>
</shuxc:ScopedPage>

View File

@@ -162,8 +162,11 @@
</DataTemplate>
</Page.Resources>
<Grid>
<Grid Visibility="{Binding Weapons, Converter={StaticResource EmptyObjectToVisibilityConverter}}">
<shuxc:StandardView ShowCondition="{Binding Weapons, Converter={StaticResource EmptyObjectToBoolConverter}}">
<shuxc:StandardView.EmptyContent>
<shuxc:Loading IsLoading="{Binding Weapons, Converter={StaticResource EmptyObjectToBoolRevertConverter}}" Style="{ThemeResource DefaultLoadingViewStyle}"/>
</shuxc:StandardView.EmptyContent>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition/>
@@ -419,6 +422,5 @@
</cwc:SwitchPresenter>
</Grid>
<shuxc:Loading IsLoading="{Binding Weapons, Converter={StaticResource EmptyObjectToBoolRevertConverter}}" Style="{ThemeResource DefaultLoadingViewStyle}"/>
</Grid>
</shuxc:StandardView>
</shuxc:ScopedPage>

View File

@@ -148,7 +148,7 @@ internal sealed partial class AchievementViewModel : Abstraction.ViewModel, INav
protected override void UninitializeOverride()
{
using (Archives?.SuppressSavingToDatabase())
using (Archives?.SuppressChangeCurrentItem())
{
Archives = default;
}

View File

@@ -122,6 +122,7 @@ internal sealed partial class AvatarPropertyViewModel : Abstraction.ViewModel, I
{
try
{
IsInitialized = false;
ValueResult<RefreshResultKind, Summary?> summaryResult;
using (await EnterCriticalSectionAsync().ConfigureAwait(false))
{
@@ -166,6 +167,10 @@ internal sealed partial class AvatarPropertyViewModel : Abstraction.ViewModel, I
catch (OperationCanceledException)
{
}
finally
{
IsInitialized = true;
}
}
[Command("CultivateCommand")]

View File

@@ -41,6 +41,7 @@ internal sealed partial class CultivationViewModel : Abstraction.ViewModel
private List<InventoryItemView>? inventoryItems;
private ObservableCollection<CultivateEntryView>? cultivateEntries;
private ObservableCollection<StatisticsCultivateItem>? statisticsItems;
private bool entriesUpdating;
public AdvancedDbCollectionView<CultivateProject>? Projects
{
@@ -65,6 +66,8 @@ internal sealed partial class CultivationViewModel : Abstraction.ViewModel
public ObservableCollection<CultivateEntryView>? CultivateEntries { get => cultivateEntries; set => SetProperty(ref cultivateEntries, value); }
public bool EntriesUpdating { get => entriesUpdating; set => SetProperty(ref entriesUpdating, value); }
public ObservableCollection<StatisticsCultivateItem>? StatisticsItems { get => statisticsItems; set => SetProperty(ref statisticsItems, value); }
protected override async ValueTask<bool> InitializeOverrideAsync()
@@ -74,6 +77,13 @@ internal sealed partial class CultivationViewModel : Abstraction.ViewModel
await taskContext.SwitchToMainThreadAsync();
Projects = cultivationService.Projects;
Projects.MoveCurrentTo(Projects.SourceCollection.SelectedOrDefault());
// Force update when re-entering the page
if (Projects.CurrentItem is not null && CultivateEntries is null)
{
await UpdateEntryCollectionAsync(Projects.CurrentItem).ConfigureAwait(false);
}
return true;
}
@@ -82,7 +92,7 @@ internal sealed partial class CultivationViewModel : Abstraction.ViewModel
protected override void UninitializeOverride()
{
using (Projects?.SuppressSavingToDatabase())
using (Projects?.SuppressChangeCurrentItem())
{
Projects = default;
}
@@ -146,22 +156,31 @@ internal sealed partial class CultivationViewModel : Abstraction.ViewModel
private async ValueTask UpdateEntryCollectionAsync(CultivateProject? project)
{
if (project is null)
try
{
return;
EntriesUpdating = true;
if (project is null)
{
return;
}
CultivationMetadataContext context = await metadataService.GetContextAsync<CultivationMetadataContext>().ConfigureAwait(false);
ObservableCollection<CultivateEntryView> entries = await cultivationService
.GetCultivateEntriesAsync(project, context)
.ConfigureAwait(false);
await taskContext.SwitchToMainThreadAsync();
CultivateEntries = entries;
await UpdateInventoryItemsAsync().ConfigureAwait(false);
await UpdateStatisticsItemsAsync().ConfigureAwait(false);
}
finally
{
await taskContext.SwitchToMainThreadAsync();
EntriesUpdating = false;
}
CultivationMetadataContext context = await metadataService.GetContextAsync<CultivationMetadataContext>().ConfigureAwait(false);
ObservableCollection<CultivateEntryView> entries = await cultivationService
.GetCultivateEntriesAsync(project, context)
.ConfigureAwait(false);
await taskContext.SwitchToMainThreadAsync();
CultivateEntries = entries;
await UpdateInventoryItemsAsync().ConfigureAwait(false);
await UpdateStatisticsItemsAsync().ConfigureAwait(false);
}
[Command("RemoveEntryCommand")]

View File

@@ -92,7 +92,14 @@ internal sealed partial class GachaLogViewModel : Abstraction.ViewModel
Archives.MoveCurrentTo(Archives.SourceCollection.SelectedOrDefault());
}
return true;
// When `Archives.CurrentItem` is not null, the `Initialization` actually completed in
// `UpdateStatisticsAsync`, so we return false to make the view hide until the actual
// initialization is complete. But we return true when no archives are available,
// so that the empty view can show up.
if (Archives.CurrentItem is null)
{
return true;
}
}
}
catch (OperationCanceledException)
@@ -104,7 +111,7 @@ internal sealed partial class GachaLogViewModel : Abstraction.ViewModel
protected override void UninitializeOverride()
{
using (Archives?.SuppressSavingToDatabase())
using (Archives?.SuppressChangeCurrentItem())
{
Archives = default;
}
@@ -311,6 +318,7 @@ internal sealed partial class GachaLogViewModel : Abstraction.ViewModel
{
if (archive is null)
{
IsInitialized = false;
Statistics = default;
return;
}