【发布时间】:2012-07-01 21:24:11
【问题描述】:
我想显示一个包含大约 10 个项目的列表框。每次我通过将项目添加到 List 来更新它时,它都会导致一点但明显的延迟,并且 UI 会冻结一段时间。我还尝试使用ObservableCollection 而不是List 作为ItemsSource,但这并没有解决问题。
我的 ListBox 必须更新得非常快,所以我真的需要你的帮助,拜托! :)
这是一些代码:
public partial class MainPage : PhoneApplicationPage
{
//private List<Word> Words = new List<Word>();
ObservableCollection<Word> Words = new ObservableCollection<Word>();
// Konstruktor
public MainPage()
{
InitializeComponent();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
ListBox1.ItemsSource = Words;
for (int j = 0; j < 10; j++)
{
Words.Add(new Word(j.ToString()));
}
}
}
public class Word
{
public String sWord { get; set; }
public Word(String word)
{
this.sWord = word;
}
}
XAML
<ListBox Name="ListBox1">
<ListBox.ItemTemplate>
<DataTemplate>
<Button Content="{Binding sWord}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
【问题讨论】:
-
显示列表中显示的 DataTemplate / 类。如果你有太多的转换器/逻辑发生,你的性能就会很差。
-
我更新了帖子。代码真的不多。
-
你是如何添加项目的?
-
只需在列表中添加一项即可:
Words.Add(new Word("hello")); -
您能否提供更多代码来说明您将项目添加到 ObservableCollection 的方式?要优化您的 ListBox,您可以在 App.xaml 中创建 DataTemplate。
标签: windows-phone-7 listbox delay itemssource