大家好,谁能告诉我,我在下面的代码中犯了什么错误,
<ListView x:Name="ServiceListView"
Loaded="ServiceListView_Loaded"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
VirtualizingPanel.IsVirtualizing="True"
GridViewColumnHeader.Click="ServiceListSort"
ScrollViewer.IsDeferredScrollingEnabled="True"
VirtualizingStackPanel.VirtualizationMode="Recycling">
<ListView.View>
<GridView>
<GridViewColumn Width="50">
<GridViewColumn.CellTemplate>
<DataTemplate>
<RadioButton IsChecked="{Binding Status}" x:Name="StartService" Checked="StartService_Checked" GroupName="{Binding ServiceName}" Style="{DynamicResource StartServiceStyle}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="50" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<DataTemplate.Resources>
<local:InvertBooleanConverter x:Key="InvertBooleanConverter" />
</DataTemplate.Resources>
<RadioButton IsChecked="{Binding Status, Converter={StaticResource InvertBooleanConverter}}" Checked="StopService_Checked" x:Name="StopService" GroupName="{Binding ServiceName}" Style="{DynamicResource StopServiceStyle}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="120" DisplayMemberBinding="{Binding ReccomendedStatus}">
<GridViewColumn.Header>
<GridViewColumnHeader Content="Recommendation"/>
</GridViewColumn.Header>
</GridViewColumn>
<GridViewColumn Width="750" DisplayMemberBinding="{Binding ServiceName}">
<GridViewColumn.Header>
<GridViewColumnHeader Content="Description"/>
</GridViewColumn.Header>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>目前它有20-40个项目,其中只有7个是可见的,它需要大约5-7秒,删除这两个单选按钮的事件时间减少到2-4秒
private void ServiceListView_Loaded(object sender, RoutedEventArgs e)
{
ServiceListView.ItemsSource = DATA_CONTROLS.ServiceData.Values;
}
public static Dictionary<int, DataObject> ServiceData = new Dictionary<int, DataObject>();为什么在msdn中显示需要这么长时间我看到显示1000个项目只需要1.6秒,为什么这个包含20-40个项目的方法需要5-7秒?我真的需要知道是什么导致了这样的性能问题。谢谢。
发现了一个问题:当我设置:ServiceListView.ItemsSource = DATA_CONTROLS.ServiceData.Values;时,它会自动触发单选按钮事件,这会导致性能下降,而且使用IsAsynch也提高了性能。
发布于 2018-07-30 17:06:52
在您的ListView中添加'IsAsync=True‘,以提高性能
https://stackoverflow.com/questions/51590031
复制相似问题