数据是完全显示了,但是UI有点卡, 数据也就几十条。。。。
附上代码:数据模板
<ListBox x:Name="listbox1">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0,0,0,10">
<TextBlock Name="displayname" FontSize="35" Text="{Binding Displayname}"/>
<TextBlock Name="phonenum" Text="{Binding PhoneNum}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox x:Name="listbox1">
数据绑定: listbox1.ItemsSource = suoxie;//suoxie里就只有大概40多条数据。。。
------解决方案--------------------
我明白你的意思了。。。其实,你可以做一个full list,然后按键时,做filter,这样,第一次键盘显示时,你放在onnavigatdto事件中(速度还ok)显示全部号码,然后每次按0~9时,过滤List<>,重新绑定。
试一下,我没试验过,但是测试上面的代码时,第一次的慢,会被后面的reload冲掉,提高客户的感受。没有实际数据(其实很难拿到,因为wp异步绑定的),你试一下先。
------解决方案--------------------
ObservableCollection<Person> plist = new ObservableCollection<Person>();
public MainPage()
{
InitializeComponent();
listbox1.DataContext = plist;
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
ThreadPool.QueueUserWorkItem((o) =>
{
for (int i = 0; i < 40; i++)
{
Person p = new Person();
p.Displayname = String.Format("姓名{0}", i + 1);
p.PhoneNum = String.Format("电话{0}", i + 1);
this.Dispatcher.BeginInvoke(new Action(() =>
{
plist.Add(p);
}));
}
});
}