我有一个绑定到可观察集合的列表框,我希望借助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的一些代码