我想显示一个包含大约10个项目的ListBox。每次我通过向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>
答案 0 :(得分:0)
我找到了解决问题的方法。为了解决延迟,我现在使用StackPanel而不是ListBox,并按以下方式添加我的按钮:
StackPanel1.Children.Add(new Button()
{
Content = "Hello World",
BorderBrush = new SolidColorBrush(Colors.Transparent),
HorizontalAlignment = HorizontalAlignment.Left
});
您可以使用
清除StackPanelStackPanel1.Children.Clear();
向按钮添加Click事件就像这样
foreach (Button btn in StackPanel1.Children)
{
btn.Click += new RoutedEventHandler(Button_Click);
}
非常简单,快得多!