我一直在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不是我正在尋找的東西,但我會牢記它。 –