我一直在处理 WPF 中的一个小视图,其中包含一些Buttons
和 a ListBox
,其项目有一个包含 aCheckBox
和 a的模板ContentPresenter
。当我开始在ListBox
上下ScrollBar
移动时滚动。这是一个性能问题,我认为这是因为CheckBoxes
. 我认为CheckBoxes
有某种渲染动画需要几毫秒才能在滴答声中淡出并且运行同步,因此会出现滞后。
我可能是错的,也许是其他原因导致了这个问题。此外,作为旁注,因为这对你们来说可能很重要,我在英特尔 i5 上的 Windows 7 中运行该应用程序。
当我离开CheckBoxs
模板时,一切都运行得非常顺利。
你们建议我怎么做?
我不知道如何禁用该动画,我不想要那种滞后的行为。
编辑:我的 ListBox 中有 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>
这是我的视图模型:
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();
}
}