C# WP7工具包PerformanceProgressBar和UI线程(丢失点效果)

C# WP7工具包PerformanceProgressBar和UI线程(丢失点效果),c#,windows-phone-7,binding,toolkit,C#,Windows Phone 7,Binding,Toolkit,我很难从WP工具包管理ProgressBar。 在我的项目中,我有一个填充了数据绑定项的列表框。 人口过程如下: 显示进度条(可见性更改为可见,IsIndeterminate为true) 提出休息要求 得到回应 解析项目集合 将内存中的项绑定到列表 隐藏进度条(可见性为已折叠,IsIndeterminate为false) 我现在的问题是: 不确定标志似乎变化太快(我认为是不同的线程?)。这导致进度条有时仅显示一个矩形。 如何确保只有在数据绑定和列表框刷新完成后,进度条才会消失 以下是我的回复:

我很难从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;
      });    
    }