ListCollectionView缓慢过滤

时间:2013-11-28 15:21:51

标签: c# wpf

我有一个绑定到可观察集合的列表框,我希望借助ListCollectionView过滤/排序。

<ListBox x:Name="UserContainer" ItemsSource="{Binding allUserViewModel.Users}" 
                             Margin="0,0,0,7"
                             Visibility="{Binding allUserViewModel.HasVisibleUsers, Converter={StaticResource BoolToVisCollapsed}}"
                             Background="Transparent" HorizontalContentAlignment="Stretch"
                             ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
                             ScrollViewer.VerticalScrollBarVisibility="Auto"
                             BorderThickness="0" Padding="0"
                             VirtualizingStackPanel.IsVirtualizing="True"  VirtualizingStackPanel.VirtualizationMode="Recycling"
                             ItemContainerStyle="{DynamicResource ListBoxItemStyle}">

                    <ListBox.Resources>
                        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />
                        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black" />
                        <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" />
                    </ListBox.Resources>

                    <ListBox.ItemsPanel>
                        <ItemsPanelTemplate>
                            <VirtualizingStackPanel />
                        </ItemsPanelTemplate>
                    </ListBox.ItemsPanel>

                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <local:UserControlButton x:Name="UserControlButton" />
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>

当我尝试过滤或排序列表时,它非常慢。 我试图用一个简单的Usercontrol替换UserControlButton几乎没有逻辑,它的速度要快得多。

所以问题是重新创建UserControl需要很长时间。

我尝试将IsVirtualizing属性设置为true并将我的模板设置为VirtualizingStackpanel,但这确实没有帮助。

知道如何解决这个问题吗?

修改

UserControlButton的一些代码

UserControlButton.xaml

UserControlButton.cs

ViewModel

0 个答案:

没有答案