我正在构建一个UWP应用程序,该应用程序使用WPF ExpanderView的移植版本(ExpanderRT on Codeplex),我使用ListBox根据我的ViewModel中的数据显示多个ExpanderViews。我在扩展包含许多项目的ExpanderView时遇到性能问题。正如您在GIF中看到的那样,第一个父项的扩展非常缓慢,需要花费一些时间来显示所有子项。如果父母的孩子不多,则动画会非常流畅。

有没有人对此控件有经验,可以帮助我加快扩展速度吗?

这是我的XAML代码:

        <Grid>
    <ListBox Name="listbox">
        <ListBox.ItemContainerStyle>
            <Style TargetType="ListBoxItem">
                <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
            </Style>
        </ListBox.ItemContainerStyle>
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel/>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
        <ListBox.ItemTemplate>
            <DataTemplate x:DataType="models:Parent">
                <controls:ExpanderControl
                    ItemsSource="{x:Bind Childs}"
                    HeaderTemplate="{StaticResource CustomHeaderTemplate}"
                    ExpanderTemplate="{StaticResource CustomExpanderTemplate}"
                    ItemTemplate="{StaticResource CustomItemTemplate}"
                    NonExpandableHeaderTemplate="{StaticResource CustomNonExpandableHeaderTemplate}" />
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Grid>


这段代码来自模型

public class Category
{
    public string Name{ get; set; }
    public List<Subcategory> Childs{ get; set; }
}


c# - ExpanderView的性能不利于扩展(XAML &#43; UWP)-LMLPHP

最佳答案

贾斯汀XL向我指出了正确的方向!
此行为是由ExpanderView的动画引起的。

在类ExpanderControl.cs中,有这些属性可以控制折叠和展开过程的动画。

    private const int KeyTimeStep = 35;
    private const int InitialKeyTime = 225;
    private const int FinalKeyTime = 250;


减小KeyTimeStep的值将导致动画更快地展开和折叠。

谢谢!

关于c# - ExpanderView的性能不利于扩展(XAML + UWP),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32500490/

10-10 14:38