0

从一个Page到下一个Page,在UI中绑定了一个属性,这个属性需要浪费时间操作一次,所以页面很长时间不来了,有什么办法可以提高速度。

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) {
    string value = string.Empty;
    IDictionary<string, string> queryString = this.NavigationContext.QueryString;
    if (queryString.ContainsKey("Type"))
    {
        this.Type = queryString["Type"];
        new Thread(() => {
            mtv.AddDistanceForList();
        }).Start();

    }
    else
    {
            GetMovieThreater();
    }
    base.OnNavigatedTo(e); }  

private void GetMovieThreater() {
    string movieId = PhoneApplicationService.Current.State["MovieId"] as string;

    mtv.SelectThreaterByMovie(movieId);
    mtv.AddDistanceForList();  }

在这样的视图模型中:

private ObservableCollection<Threater> threaters; public ObservableCollection<Threater> Threaters {
    get { return threaters; }
    set
    {
        if (threaters != value)
        {
            threaters = value;
            NotifyPropertyChanged("Threaters");
        }
    } }

private CollectionViewSource filteredThreater; public CollectionViewSource FilteredThreater {
    get { return filteredThreater; }
    set
    {
        filteredThreater = value;
        NotifyPropertyChanged("FilteredThreater");
    } } This function wate time!!! public void SelectThreaterByMovie(string movieId) {
    Threaters.Clear();

    if(MovieDataAllMovies.Threaters!=null)
    {
      foreach(var i in MovieDataAllMovies.MoviePlans){
          if (i.MovieId == movieId)
          {
              MovieDataAllMovies.Threaters.ForEach((e) =>
              {
                  if (i.TheaterId == e.Tid.ToString())
                  {
                      Threaters.Add(e);
                  }
              });
          }
      }
      Deployment.Current.Dispatcher.BeginInvoke(() =>
      {
          this.FilteredThreater.Source = Threaters;
      });    } }
4

1 回答 1

0

有一篇非常好的文章,介绍了如何在与长时间运行的 Web 服务调用交互时使用性能进度条处理这种情况,此处提供了文章页面底部的示例代码。

引用 Dan Clarke 的话,“我非常喜欢在我的 Windows Phone 7 应用程序中拥有一个全局性能进度条,以便用户在我与 Web 服务交互时有一个一致的参考框架。要求很简单,出现一个进度条在所有页面上,没有任何特殊要求(即没有自定义控件、特殊代码片段等)。它应该在一个地方进行管理,并且易于扩展。幸运的是,Silverlight 提供的极大灵活性使这变得轻而易举:“来源

此选项至少会让您知道页面正在以最低限度加载。

于 2012-12-13T21:18:15.310 回答