C# WP7工具包PerformanceProgressBar和UI线程(丢失点效果)
我很难从WP工具包管理ProgressBar。 在我的项目中,我有一个填充了数据绑定项的列表框。 人口过程如下:C# WP7工具包PerformanceProgressBar和UI线程(丢失点效果),c#,windows-phone-7,binding,toolkit,C#,Windows Phone 7,Binding,Toolkit,我很难从WP工具包管理ProgressBar。 在我的项目中,我有一个填充了数据绑定项的列表框。 人口过程如下: 显示进度条(可见性更改为可见,IsIndeterminate为true) 提出休息要求 得到回应 解析项目集合 将内存中的项绑定到列表 隐藏进度条(可见性为已折叠,IsIndeterminate为false) 我现在的问题是: 不确定标志似乎变化太快(我认为是不同的线程?)。这导致进度条有时仅显示一个矩形。 如何确保只有在数据绑定和列表框刷新完成后,进度条才会消失 以下是我的回复:
private void DataLoaded(object o, RestResponseEventArgs e)
{
int i = 0;
List<Entry> entries = new List<Entry>();
foreach (JObject current in e.JsonObject["entries"].Children())
{
Entry e = Entry.Parse(current);
entries.Add(e);
}
this.MyListBox.ItemsSource = entries;
this.ProgressBar.Visibility = Visibility.Collapsed;
this.ProgressBar.IsIndeterminate = false;
}
private void数据加载(对象o,resresponseeventargs e)
{
int i=0;
列表条目=新列表();
foreach(e.JsonObject[“条目”].Children()中的当前作业对象)
{
条目e=Entry.Parse(当前);
条目。添加(e);
}
this.MyListBox.ItemsSource=条目;
this.ProgressBar.Visibility=可见性.已折叠;
this.ProgressBar.IsIndeterminate=false;
}
使用Dispatcher.BeginInvoke()方法:
private void数据加载(对象o,resresponseeventargs e)
{
Dispatcher.BeginInvoke(()=>
{
int i=0;
列表条目=新列表();
foreach(e.JsonObject[“条目”].Children()中的当前作业对象)
{
条目e=Entry.Parse(当前);
条目。添加(e);
}
this.MyListBox.ItemsSource=条目;
this.ProgressBar.Visibility=可见性.已折叠;
this.ProgressBar.IsIndeterminate=false;
});
}
首先在xaml中为ProgressBar提供名称,并在您想消失时使用该名称ProgressBar ProgressBar是Toolkit的PerformanceProgressBar的名称,我这样命名只是为了简化示例代码。我认为这不是一个小问题。实际上,我怀疑我的一些自定义控件可能会削弱应用程序的性能。
private void DataLoaded(object o, RestResponseEventArgs e)
{
Dispatcher.BeginInvoke(() =>
{
int i = 0;
List<Entry> entries = new List<Entry>();
foreach (JObject current in e.JsonObject["entries"].Children())
{
Entry e = Entry.Parse(current);
entries.Add(e);
}
this.MyListBox.ItemsSource = entries;
this.ProgressBar.Visibility = Visibility.Collapsed;
this.ProgressBar.IsIndeterminate = false;
});
}