improve achievement & gachalog large dataset load speed

This commit is contained in:
Lightczx
2023-08-31 10:23:25 +08:00
parent 4e0d83726e
commit d90ce0afe0
4 changed files with 212 additions and 201 deletions

View File

@@ -20,7 +20,7 @@
<shvconv:Int32ToGradientColorConverter x:Key="Int32ToGradientColorConverter" MaximumValue="{Binding GuaranteeOrangeThreshold}"/>
<DataTemplate x:Key="OrangeListTemplate" d:DataType="shvg:SummaryItem">
<Grid Margin="0,4,0,0" Style="{StaticResource BorderGridStyle}">
<Grid Margin="0" Style="{StaticResource BorderGridStyle}">
<ToolTipService.ToolTip>
<TextBlock Text="{Binding TimeFormatted}"/>
</ToolTipService.ToolTip>
@@ -84,21 +84,18 @@
TrueValue="{ThemeResource CardBackgroundFillColorDefaultBrush}"/>
<DataTemplate x:Key="OrangeGridTemplate" d:DataType="shvg:SummaryItem">
<Border
Margin="0,4,4,0"
<shvcont:BottomTextSmallControl
Background="{Binding IsUp, Converter={StaticResource BoolToBrushConverter}}"
Style="{StaticResource BorderCardStyle}"
Text="{Binding LastPull}"
ToolTipService.ToolTip="{Binding TimeFormatted}">
<shvcont:BottomTextSmallControl Text="{Binding LastPull}">
<shvcont:BottomTextSmallControl.Foreground>
<SolidColorBrush Color="{Binding Color}"/>
</shvcont:BottomTextSmallControl.Foreground>
<shvcont:ItemIcon
shch:FrameworkElementHelper.SquareLength="40"
Icon="{Binding Icon}"
Quality="{Binding Quality}"/>
</shvcont:BottomTextSmallControl>
</Border>
<shvcont:BottomTextSmallControl.Foreground>
<SolidColorBrush Color="{Binding Color}"/>
</shvcont:BottomTextSmallControl.Foreground>
<shvcont:ItemIcon
shch:FrameworkElementHelper.SquareLength="40"
Icon="{Binding Icon}"
Quality="{Binding Quality}"/>
</shvcont:BottomTextSmallControl>
</DataTemplate>
</UserControl.Resources>
@@ -329,28 +326,45 @@
</StackPanel>
</Expander>
<ScrollViewer
<cwc:SwitchPresenter
Grid.Row="2"
Margin="12,6,12,12"
VerticalScrollBarVisibility="Hidden">
<cwc:SwitchPresenter Value="{Binding ElementName=ItemsPanelSelector, Path=Current}">
<cwc:SwitchPresenter.ContentTransitions>
<TransitionCollection>
<ContentThemeTransition/>
</TransitionCollection>
</cwc:SwitchPresenter.ContentTransitions>
<cwc:Case Value="List">
<ItemsControl ItemTemplate="{StaticResource OrangeListTemplate}" ItemsSource="{Binding OrangeList}"/>
</cwc:Case>
<cwc:Case Value="Grid">
<ItemsControl
Margin="0,0,-4,0"
ItemTemplate="{StaticResource OrangeGridTemplate}"
ItemsPanel="{StaticResource WrapPanelTemplate}"
ItemsSource="{Binding OrangeList}"/>
</cwc:Case>
</cwc:SwitchPresenter>
</ScrollViewer>
Value="{Binding ElementName=ItemsPanelSelector, Path=Current}">
<cwc:SwitchPresenter.ContentTransitions>
<TransitionCollection>
<ContentThemeTransition/>
</TransitionCollection>
</cwc:SwitchPresenter.ContentTransitions>
<cwc:Case Value="List">
<ListView
ItemTemplate="{StaticResource OrangeListTemplate}"
ItemsSource="{Binding OrangeList}"
ScrollViewer.VerticalScrollBarVisibility="Hidden"
SelectionMode="None">
<ListView.ItemContainerStyle>
<Style BasedOn="{StaticResource DefaultListViewItemStyle}" TargetType="ListViewItem">
<Setter Property="Padding" Value="0"/>
<Setter Property="Margin" Value="0,4,0,0"/>
</Style>
</ListView.ItemContainerStyle>
</ListView>
</cwc:Case>
<cwc:Case Value="Grid">
<GridView
Margin="0,0,-4,0"
ItemTemplate="{StaticResource OrangeGridTemplate}"
ItemsSource="{Binding OrangeList}"
ScrollViewer.VerticalScrollBarVisibility="Hidden"
SelectionMode="None">
<GridView.ItemContainerStyle>
<Style BasedOn="{StaticResource DefaultGridViewItemStyle}" TargetType="GridViewItem">
<Setter Property="Padding" Value="0"/>
<Setter Property="Margin" Value="0,0,2,4"/>
</Style>
</GridView.ItemContainerStyle>
</GridView>
</cwc:Case>
</cwc:SwitchPresenter>
</Grid>
</Border>
</UserControl>

View File

@@ -131,7 +131,7 @@
DisplayMode="Inline"
IsPaneOpen="True"
OpenPaneLength="{StaticResource CompatSplitViewOpenPaneLength2}"
PaneBackground="Transparent">
PaneBackground="{x:Null}">
<SplitView.Pane>
<ListView
ItemsSource="{Binding AchievementGoals}"
@@ -177,79 +177,79 @@
</SplitView.Pane>
<SplitView.Content>
<ScrollViewer Padding="0,0,8,0">
<ItemsControl
Margin="8,0,0,16"
ItemsPanel="{StaticResource ItemsStackPanelTemplate}"
ItemsSource="{Binding Achievements}">
<ItemsControl.ItemContainerTransitions>
<TransitionCollection>
<ContentThemeTransition/>
</TransitionCollection>
</ItemsControl.ItemContainerTransitions>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border
Margin="0,8,0,0"
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
Style="{StaticResource BorderCardStyle}">
<Grid MinHeight="48" Padding="8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<ListView
Margin="8,0,0,0"
Padding="0,0,0,8"
ItemsSource="{Binding Achievements}"
SelectionMode="None">
<ListView.ItemContainerStyle>
<Style BasedOn="{StaticResource DefaultListViewItemStyle}" TargetType="ListViewItem">
<Setter Property="Padding" Value="0"/>
<Setter Property="Margin" Value="0,4,8,0"/>
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate>
<Border
Margin="0,4,0,0"
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
Style="{StaticResource BorderCardStyle}">
<Grid MinHeight="48" Padding="8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<CheckBox
Grid.Column="0"
MinWidth="0"
MinHeight="0"
Margin="8,0"
Padding="0,0,0,0"
Command="{Binding Path=DataContext.SaveAchievementCommand, Source={StaticResource BindingProxy}}"
CommandParameter="{Binding}"
IsChecked="{Binding IsChecked, Mode=TwoWay}"/>
<Grid Grid.Column="1" Margin="8,0,0,0">
<Grid.ColumnDefinitions>
<!-- text -->
<ColumnDefinition/>
<!-- time -->
<ColumnDefinition Width="auto"/>
<!-- pic -->
<ColumnDefinition Width="auto"/>
<!-- count -->
<ColumnDefinition Width="32"/>
</Grid.ColumnDefinitions>
<StackPanel>
<TextBlock Text="{Binding Inner.Title}"/>
<TextBlock
Margin="0,2,0,0"
Style="{StaticResource SecondaryTextStyle}"
Text="{Binding Inner.Description}"
TextTrimming="CharacterEllipsis"/>
</StackPanel>
<CheckBox
Grid.Column="0"
MinWidth="0"
MinHeight="0"
Margin="8,0"
Padding="0,0,0,0"
Command="{Binding Path=DataContext.SaveAchievementCommand, Source={StaticResource BindingProxy}}"
CommandParameter="{Binding}"
IsChecked="{Binding IsChecked, Mode=TwoWay}"/>
<Grid Grid.Column="1" Margin="8,0,0,0">
<Grid.ColumnDefinitions>
<!-- text -->
<ColumnDefinition/>
<!-- time -->
<ColumnDefinition Width="auto"/>
<!-- pic -->
<ColumnDefinition Width="auto"/>
<!-- count -->
<ColumnDefinition Width="32"/>
</Grid.ColumnDefinitions>
<StackPanel>
<TextBlock Text="{Binding Inner.Title}"/>
<TextBlock
Grid.Column="1"
Margin="12,0,12,0"
VerticalAlignment="Center"
Text="{Binding Time}"
Visibility="{Binding IsChecked, Converter={StaticResource BoolToVisibilityConverter}}"/>
<shci:CachedImage
Grid.Column="2"
shch:FrameworkElementHelper.SquareLength="32"
Source="{StaticResource UI_ItemIcon_201}"/>
<TextBlock
Grid.Column="3"
Margin="12,0,0,0"
VerticalAlignment="Center"
Text="{Binding Inner.FinishReward.Count}"/>
</Grid>
Margin="0,2,0,0"
Style="{StaticResource SecondaryTextStyle}"
Text="{Binding Inner.Description}"
TextTrimming="CharacterEllipsis"/>
</StackPanel>
<TextBlock
Grid.Column="1"
Margin="12,0,12,0"
VerticalAlignment="Center"
Text="{Binding Time}"
Visibility="{Binding IsChecked, Converter={StaticResource BoolToVisibilityConverter}}"/>
<shci:CachedImage
Grid.Column="2"
shch:FrameworkElementHelper.SquareLength="32"
Source="{StaticResource UI_ItemIcon_201}"/>
<TextBlock
Grid.Column="3"
Margin="12,0,0,0"
VerticalAlignment="Center"
Text="{Binding Inner.FinishReward.Count}"/>
</Grid>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
</Grid>
</Border>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</SplitView.Content>
</SplitView>
</cwuc:Case>

View File

@@ -22,7 +22,7 @@
<Page.Resources>
<DataTemplate x:Key="TeamItemTemplate" d:DataType="shvcom:Team">
<Border Margin="12,0,12,12" Style="{StaticResource BorderCardStyle}">
<Border Margin="0,0,0,8" Style="{StaticResource BorderCardStyle}">
<Grid Margin="6">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
@@ -31,7 +31,7 @@
<ItemsControl HorizontalAlignment="Left" ItemsSource="{Binding}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<cwuc:UniformGrid ColumnSpacing="6" Columns="4"/>
<StackPanel Orientation="Horizontal" Spacing="6"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
@@ -113,21 +113,19 @@
</Pivot.HeaderTemplate>
<Pivot.ItemTemplate>
<DataTemplate>
<ScrollViewer>
<GridView
Margin="16,16,6,-6"
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>
</ScrollViewer>
<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>
@@ -141,21 +139,19 @@
</Pivot.HeaderTemplate>
<Pivot.ItemTemplate>
<DataTemplate>
<ScrollViewer>
<GridView
Margin="16,16,6,-6"
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>
</ScrollViewer>
<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>
@@ -175,19 +171,20 @@
<ColumnDefinition Width="auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<ScrollViewer Grid.Column="0" Margin="0,12,0,0">
<ItemsControl
ItemTemplate="{StaticResource TeamItemTemplate}"
ItemsPanel="{StaticResource ItemsStackPanelTemplate}"
ItemsSource="{Binding Up}"/>
</ScrollViewer>
<ScrollViewer Grid.Column="1" Margin="0,12,0,0">
<ItemsControl
ItemTemplate="{StaticResource TeamItemTemplate}"
ItemsPanel="{StaticResource ItemsStackPanelTemplate}"
ItemsSource="{Binding Down}"/>
</ScrollViewer>
<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>
@@ -266,58 +263,58 @@
Style="{StaticResource CaptionTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewConstellation6}"/>
</Grid>
<ScrollViewer Grid.Row="1">
<ItemsControl
Margin="0,0,0,8"
HorizontalContentAlignment="Stretch"
ItemsPanel="{StaticResource ItemsStackPanelTemplate}"
ItemsSource="{Binding AvatarConstellationInfos}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Margin="16,0,16,8" Style="{StaticResource BorderCardStyle}">
<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="auto"/>
<ColumnDefinition/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="7*"/>
</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>
<cwuc:UniformGrid Columns="7"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{Binding}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
<TextBlock
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{Binding Rate}"/>
<ItemsControl Grid.Column="1" ItemsSource="{Binding Rates}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<cwuc:UniformGrid Columns="7"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{Binding}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
</Grid>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ListView>
</Grid>
</PivotItem>
</Pivot>

View File

@@ -291,13 +291,13 @@
Margin="16,16,0,0"
ItemsSource="{Binding Selected.CultivationItemsView}"
SelectionMode="None">
<ItemsControl.ItemTemplate>
<GridView.ItemTemplate>
<DataTemplate>
<shvc:BottomTextControl Text="{Binding Name}">
<shvc:ItemIcon Icon="{Binding Icon, Converter={StaticResource ItemIconConverter}}" Quality="{Binding RankLevel}"/>
</shvc:BottomTextControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</GridView.ItemTemplate>
</GridView>
<TextBlock