0

我在包含Pivot5 PivotItems的屏幕上遇到“延迟”问题。这些问题仅在第 3 和第 4 个 PivotItems 显示后第一次出现。当我回到这些 PivotItems 时,或者如果我选择其他 PivotItems 我没有遇到相同的“延迟”......

在此处输入图像描述

我试图了解这个问题出在哪里,所以我在 PivotItems 上添加了一些事件: LoadedLoadingGotFocus。在我的日志中,我看到在显示页面后很好地调用了 Loaded 和 Loading,但只有在 PivotItem 中的项目获得焦点时才会调用 GotFocus。

我还在Pivot上使用SelectedIndex,但这并不能帮助我理解为什么我会遇到 2 个 PivotItems 的延迟......

显示表单的所有数据都是通过LoadDatas()方法从SQLite 数据库加载的:所以当我浏览 PivotItems 时,数据已经加载。在我的日志中,我看到在构造函数中加载数据后很好地调用了LoadingLoaded :

11.07.18.615885 : HomeViewModel - OpenForm()
11.07.18.662764 : DetailsViewModel - Ctor() - start
11.07.18.662764 : DetailsViewModel - LoadDatas() - start
11.07.18.803396 : DetailsViewModel - LoadDatas() - end
11.07.18.803396 : DetailsViewModel - Ctor() - end
11.07.19.053413 : DetailsPage - PivotItem_Loading() - DetailsGeneralPivotItem
11.07.19.053413 : DetailsPage - PivotItem_Loading() - DetailsMachinePivotItem
11.07.19.069042 : DetailsPage - PivotItem_Loading() - DetailsComponentPivotItem
11.07.19.069042 : DetailsPage - PivotItem_Loading() - DetailsFormPartsPivotItem
11.07.19.069042 : DetailsPage - PivotItem_Loading() - DetailsFeedbacksPivotItem
11.07.19.287811 : DetailsPage - PivotItem_Loaded() - DetailsGeneralPivotItem
11.07.19.287811 : DetailsPage - PivotItem_Loaded() - DetailsMachinePivotItem
11.07.19.287811 : DetailsPage - PivotItem_Loaded() - DetailsComponentPivotItem
11.07.19.303432 : DetailsPage - PivotItem_Loaded() - DetailsFormPartsPivotItem
11.07.19.303432 : DetailsPage - PivotItem_Loaded() - DetailsFeedbacksPivotItem

第 3 个 PivotItem 的 XAML 与延迟问题有关,如下所示:

<Pivot x:Name="Pivot"
       SelectedIndex="{Binding SelectedIndexPivot, Mode=TwoWay}"
       Opacity="{Binding IsBusy, Converter={StaticResource ActivityToOpacityConverter}}"
       IsEnabled="{Binding IsBusy, Converter={StaticResource InvertedBoolConverter}}">

    <!-- 1. General / 2. Machine -->
    ...
    <!-- 3. Component -->
    <PivotItem x:Uid="DetailsComponentPivotItem"
               x:Name="DetailsComponentPivotItem"
               Loaded="PivotItem_Loaded"
               Loading="PivotItem_Loading">
        <ScrollViewer VerticalScrollBarVisibility="Hidden"
                      VerticalScrollMode="Auto">
            <StackPanel>
                ...
                <Grid Grid.Row="0">
                    ...
                    <!-- Component Order -->
                    <StackPanel Orientation="Vertical" Grid.Row="0" Grid.Column="0" Margin="4,8,20,0" >
                        <TextBlock x:Uid="DetailsComponentTextBlockComponentOrder" />
                        <AutoSuggestBox x:Uid="DetailsComponentAsbComponentOrder"
                                    Name="DetailsComponentAsbComponentOrder"
                                    ItemsSource="{x:Bind ViewModel.VComponentOrders}"
                                    DisplayMemberPath="component_order"
                                    TextMemberPath="component_order"
                                    QueryIcon="Find"
                                    Text="{Binding CarForm.component_order, Mode=TwoWay, Converter={StaticResource StringToNullableIntConverter}}"
                                    TextChanged="asbTextChanged"
                                    QuerySubmitted="asbQuerySubmitted"
                                    SuggestionChosen="asbSuggestionChosen" />
                    </StackPanel>
                    <!-- Component Order Type -->
                    <StackPanel Orientation="Vertical" Grid.Row="0" Grid.Column="1" Margin="4,8,20,0" >
                        <TextBlock x:Uid="DetailsComponentTextBlockComponentOrderType" />
                        <ComboBox ItemsSource="{x:Bind ViewModel.ComponentOrderType}"
                                  SelectedItem="{Binding SelectedComponentOrderType, Mode=TwoWay}"
                                  HorizontalAlignment="Stretch" />
                    </StackPanel>
                    ...                         
                    <!-- Hours -->
                    <StackPanel Orientation="Vertical" Grid.Row="1" Grid.Column="2" Margin="4,8,20,0" >
                        <TextBlock x:Uid="DetailsComponentTextBlockComponentHours" />
                        <input:SfNumericTextBox FormatString="N0"
                                                Value="{Binding CarForm.component_hour, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                                                MaximumNumberDecimalDigits="0"
                                                Style="{StaticResource NumericTextBoxStyle}" />
                    </StackPanel>
                </Grid>
                ...                     
                <Grid Margin="4,8,20,0">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto" />
                        <RowDefinition Height="*" />
                    </Grid.RowDefinitions>
                    <TextBlock x:Uid="DetailsComponentTextBlockComponentPhotos" Grid.Row="0"/>
                    <GridView ItemsSource="{x:Bind ViewModel.CarForm.images}"
                              IsItemClickEnabled="True"
                              SelectionMode="Single"
                              Grid.Row="1">
                        <i:Interaction.Behaviors>
                            <core:EventTriggerBehavior EventName="ItemClick">
                                <core:InvokeCommandAction Command="{Binding PhotoItemClickedCommand}" />
                            </core:EventTriggerBehavior>
                        </i:Interaction.Behaviors>
                        <GridView.FooterTemplate>
                            <DataTemplate>
                                <CommandBar Background="White">
                                    <CommandBar.Content>
                                        <AppBarButton x:Uid="DetailsComponentButtonAddPhoto"
                                                      Icon="Add"
                                                      Command="{Binding AddPhotoCommand}" />
                                    </CommandBar.Content>
                                </CommandBar>
                            </DataTemplate>
                        </GridView.FooterTemplate>
                    </GridView>
                </Grid>
            </StackPanel>
        </ScrollViewer>
    </PivotItem>
    <!-- 4. Parts / 5. Feedbacks -->
    ...            
</Pivot>

这个 PivotItem 包含很多字段:

  • 自动建议框
  • 文本框
  • 组合框
  • Syncfusion 数字文本框
  • 带有照片列表的GridView

我已经尝试从“ {Binding ...} ”迁移到“ {x:Bind ...} ”,但我遇到了一些组件的问题:ComboBox、Syncfusion NumericTextBox。所以我目前在我的页面中混合了这两个绑定。

我也尝试删除 GridView块,但延迟始终存在。

=> 你有什么解释吗?显示 PivotItem 时会调用哪些事件?有没有办法通过 XAML 解决这个问题?(使用“x:DeferLoadStrategy”或其他方式)

4

0 回答 0