我正在构建一个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; }
}
最佳答案
贾斯汀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/