Windows phone 8 如何优化windows phone嵌套列表框?

Windows phone 8 如何优化windows phone嵌套列表框?,windows-phone-8,windows-phone,Windows Phone 8,Windows Phone,这是我的数据源类型 public class Part { public int PartNumber { get; set; } public string ar_PartNumber { get; set; } public List<PartSuras> PartSuras { get; set; } public int PageNumber { get; set; } public string ar_PageNumber { get

这是我的数据源类型

public class Part
{
    public int PartNumber { get; set; }
    public string ar_PartNumber { get; set; }
    public List<PartSuras> PartSuras { get; set; }
    public int PageNumber { get; set; }
    public string ar_PageNumber { get; set; }

}

public class PartSuras
{
    public int SuraID { get; set; }
    public string ar_SuraID { get; set; }

    public string SuraTitle { get; set; }
    public string SuraTitleEn { get; set; }
    public int StartVerseID { get; set; }
    public int PageNumber { get; set; }
    public string ar_PageNumber { get; set; }
}
公共类部分
{
公共整数零件号{get;set;}
公共字符串ar_PartNumber{get;set;}
公共列表PartSuras{get;set;}
公共整数页码{get;set;}
公共字符串ar_页码{get;set;}
}
公共级半身像
{
公共整数SuraID{get;set;}
公共字符串aru SuraID{get;set;}
公共字符串SuraTitle{get;set;}
公共字符串SuraTitleEn{get;set;}
public int StartVerseID{get;set;}
公共整数页码{get;set;}
公共字符串ar_页码{get;set;}
}
这是嵌套的列表框

 <ListBox  Loaded="list_Index_Loaded" Name="list_Index" HorizontalAlignment="Stretch" Margin="-12,-40,-12,0"  VerticalAlignment="Top"  ScrollViewer.VerticalScrollBarVisibility="Disabled">
                    <ListBox.ItemTemplate >
                        <DataTemplate>
                            <StackPanel HorizontalAlignment="Stretch" VerticalAlignment="Top">
                                <Button HorizontalAlignment="Stretch" Width="480" BorderBrush="#FFCADBBD" Margin="0,-12" BorderThickness="0,0,0,2" Background="#FFD2BC70" Foreground="Black" Name="bt_part" Tag="{Binding PageNumber}" Tap="bt_part_Tap" >
                                    <TextBlock HorizontalAlignment="Stretch" TextAlignment="Center">
                                    <Run Text="الجزء "></Run>
                                    <Run Text="{Binding ar_PartNumber}"></Run>
                                    </TextBlock>
                                </Button>
                                <ListBox Name="list_sura" ItemsSource="{Binding PartSuras}" ScrollViewer.VerticalScrollBarVisibility="Disabled">
                                    <ListBox.ItemTemplate>
                                        <DataTemplate>
                                            <Button  HorizontalAlignment="Stretch" Width="480" Margin="0,-12"  BorderThickness="0,0,0,2" Background="#FFE5DCAA" Foreground="Black" Name="bt_part" Tag="{Binding PageNumber}" Tap="bt_part_Tap" >
                                                <Grid Width="430" HorizontalAlignment="Stretch">
                                                    <Grid.ColumnDefinitions>
                                                        <ColumnDefinition></ColumnDefinition>
                                                        <ColumnDefinition></ColumnDefinition>
                                                    </Grid.ColumnDefinitions>
                                                    <TextBlock Grid.Column="0" HorizontalAlignment="Stretch" TextAlignment="Left">
                                                     <Run Text="{Binding ar_SuraID}"></Run>
                                                     <Run Text="-"></Run>
                                                     <Run Text="{Binding SuraTitle}"></Run>
                                                    </TextBlock>
                                                    <TextBlock Grid.Column="1" HorizontalAlignment="Stretch" TextAlignment="Right" Text="{Binding ar_PageNumber}"></TextBlock>
                                                </Grid>

                                            </Button>
                                        </DataTemplate>
                                    </ListBox.ItemTemplate>
                                </ListBox>

这有点慢,在Lumia 920(1 GB ram)设备中,仅构建列表框几乎需要3秒钟—我知道构建数据源的时间,这没关系—如何优化它


如果我删除列表框并在代码隐藏中创建控件,性能会更好吗?

如果您不需要滚动(您有
ScrollViewer.VerticalScrollBarVisibility=“Disabled”
),请尝试改用
ItemsControl
,它的性能应该更好。

对外部列表框使用LongListSelector,对内部列表框使用ItemsControl。因为LongListSelector比ListBox优化,因为您不能使用嵌套的LongListSelector,这会导致滚动和虚拟化问题

您有多少数据(记录数)?请尝试将第一个ListBox DataTemplate中的StackPanel替换为网格。还可以尝试设置第一个列表框的高度/宽度项目数为30个主要项目和114个孩子您是否尝试了我的上述评论?是的,看起来很轻,但不是很明显我还有2秒的时间加载绑定数据谢谢,这将时间缩短了1秒,之前是3秒