我一直在WPF中的一个小视图,其中包含几个Buttons
和ListBox
其项目的模板包含一个CheckBox
和ContentPresenter
。当我开始在ListBox
滚动ScrollBar
上下移动laggy。这是一种性能问题,我认为这是因为CheckBoxes
。我认为CheckBoxes
有一些渲染动画,只需要几毫秒就可以淡入点和那些同步,因此会出现滞后。列表框中的复选框使滚动滞后
我可能是错的,也许这是别的东西导致这个问题。更进一步,只是作为一个旁注,因为它可能对你们很重要,我正在Windows 7上运行英特尔i5上的应用程序。
当我离开CheckBoxs
远离模板时,它运行得非常顺利。
你们建议我做什么?
我不知道如何禁用该动画,我不希望这种缓慢的行为。
编辑:我在我的列表框5000项
这是我的XAML:
<ListBox ItemsSource="{Binding Source}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Checked}"/>
<ContentPresenter Content="{Binding Text}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
这是我的ViewModel:
public class ViewModel
{
public ViewModel()
{
this.Source = new ObservableCollection<ListItem>();
for (int i = 0; i < 5000; i++)
{
this.Source.Add(new ListItem(){ Text = "test" + i, Checked = true });
}
}
public ObservableCollection<ListItem> Source
{
get;
set;
}
}
public class ListItem
{
public bool Checked
{
get;
set;
}
public string Text
{
get;
set;
}
}
这是我的MainWindow.cs:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = new ViewModel();
}
}
尝试使用'VirtualizingStackPanel.VirtualizationMode =“回收”'来提高滚动期间的性能。在极端情况下,请尝试使用ScrollViewer.IsDeferredScrollingEnabled =“True”进行延迟滚动。有关详细信息,请参阅:[link1](http://msdn.microsoft.com/en-us/library/cc716876.aspx)和[link2](http://msdn.microsoft.com/zh-cn/library/ cc716879.aspx)。 “CheckBox”的动画可能与此无关。 –
@Anatoliy发表您的评论作为答复,我会标记它。回收确实有一点帮助,谢谢你的建议。 IsDefScrolling不是我正在寻找的东西,但我会牢记它。 –