我有一个Panorama控件,其中有一个ExpanderView项(来自Silverlight工具包)。
我的客户希望此页面可自定义。那就是为什么我创建了3个绑定级别:
PanoramaItems,ExpanderView标头和ExpanderView内容。
当我设置Panorama控件的itemssource时出现问题。显示项目大约需要5秒钟。

知道我该如何解决吗?

C#代码:

private void panorama_Loaded(object sender, RoutedEventArgs e)
{
        this.DataContext = App.Products;
}


XAML代码:

<controls:Panorama Loaded="panorama_Loaded" x:Name="panorama" ItemsSource="{Binding}">
        <controls:Panorama.ItemTemplate>
            <DataTemplate>
                <ListBox  ItemsSource="{Binding Sub_Products}" >
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <toolkit:ExpanderView  Header="{Binding}" Expander="{Binding}" ItemsSource="{Binding Sub_Sub_Products}">
                                <toolkit:ExpanderView.ExpanderTemplate>
                                    <DataTemplate>
                                        <StackPanel Orientation="Horizontal">
                                            <Image VerticalAlignment="Center" Source="Images/List.png" Width="25" />
                                            <TextBlock Text="{Binding Title}" />
                                        </StackPanel>
                                    </DataTemplate>
                                </toolkit:ExpanderView.ExpanderTemplate>
                                <toolkit:ExpanderView.ItemTemplate>
                                    <DataTemplate>
                                        <Grid Margin="-30,0,0,0" Background="White"  Width="450" Tap="Grid_Tap" >
                                            <Grid.ColumnDefinitions>
                                                <ColumnDefinition Width="Auto" />
                                                <ColumnDefinition Width="*" />
                                            </Grid.ColumnDefinitions>
                                            <Grid.RowDefinitions>
                                                <RowDefinition Height="Auto" />
                                                <RowDefinition Height="*" />
                                            </Grid.RowDefinitions>
                                            <Image Grid.Row="0"  Source="{Binding ImageSource}" />
                                            <StackPanel  VerticalAlignment="Top" Grid.Column="1">
                                                <TextBlock Text="{Binding Title}"  />
                                                <TextBlock Text="{Binding Description}"  />
                                                <Grid>
                                                    <Grid.ColumnDefinitions>
                                                        <ColumnDefinition Width="Auto" />
                                                        <ColumnDefinition Width="*" />
                                                    </Grid.ColumnDefinitions>
                                                    </Grid>
                                                <TextBlock Margin="0,12,32,0" Grid.Row="1" Text="Learn more" />
                                            </StackPanel>
                                        </Grid>
                                    </DataTemplate>
                                </toolkit:ExpanderView.ItemTemplate>
                            </toolkit:ExpanderView>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>
            </DataTemplate>
        </controls:Panorama.ItemTemplate>
    </controls:Panorama>

最佳答案

您可以尝试折叠屏幕外的全景项目,并仅将可见性设置为按需可见。那至少应该减少可见树的大小。

查找速度较慢的部分的一种好方法是在Visual Studio中使用探查器。您会发现一帧真的很慢(在您的情况下,渲染时间为5秒)。然后,深入到该框架的可视树中,查看哪些元素需要很长时间才能呈现并尝试对其进行优化。

关于windows-phone-7 - 使用ExpanderView&Binding时页面加载缓慢(Windows Phone 7),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10483082/

10-13 09:04