2016-05-28 14 views
0

私の問題はProgressRingが常に実行されていることです。私はMVVMを使用します。 ProgressRingは、アプリが新しいデータを取得した場合にのみアクティブになります。XAML ProgressRingが停止しない

私はVM内のコード(私はViewModelに更新)を持つ:

public class MainPageViewModel : ObservableCollection<AdModel>, ISupportIncrementalLoading{ 
    private Visibility _loaderVisibility; 
    public Visibility LoaderVisibility 
    { 
     get { return _loaderVisibility; } 
     private set 
     { 
      _loaderVisibility = value; 

     }} 
    public IAsyncOperation<LoadMoreItemsResult> LoadMoreItemsAsync(uint count) 
    { 
     CoreDispatcher coreDispatcher = Window.Current.Dispatcher; 

     return Task.Run<LoadMoreItemsResult>(async() => 
     { 
      await coreDispatcher.RunAsync(CoreDispatcherPriority.Normal, 
       () => 
       { 
        this.LoaderVisibility = Visibility.Visible; 
       }); 

      var NewAds = new ObservableCollection<AdModel>(); 

      do{NewAds = await LoadAds();//get data from API} 
      while (NewAds == null); 

      await coreDispatcher.RunAsync(CoreDispatcherPriority.Normal, 
       () => 
       { 
        foreach (AdModel item in NewAds) 
        { 
         this.Add(item); 
        } 
        this.LoaderVisibility = Visibility.Collapsed; 
       }); 

      return new LoadMoreItemsResult() { Count = count }; 
     }).AsAsyncOperation<LoadMoreItemsResult>();}} 

答えて

2

まずUIは新しい値を通知することができるようにあなたがLoaderVisibilityプロパティを変更したときにPropertyChangedイベントを発生する必要があります。 Implement Property Change Notificationの例をご覧ください。

LoaderVisibilityプロパティは次のようになります(このVMクラスはINotifyPropertyChangedインターフェイスを実装する必要があるため、PropertyChangedイベントが発生します)。

private Visibility _loaderVisibility; 
public Visibility LoaderVisibility 
{ 
    get { return _loaderVisibility; } 
    set 
    { 
     _loaderVisibility = value; 
     OnPropertyChanged(new System.ComponentModel.PropertyChangedEventArgs("LoaderVisibility")); 
    } 
} 

第二には、XAMLでアップリング綴じのデータを破損する、背後にあるコードからProgressRing's Visibilityプロパティを設定しないでください。

+0

私のクラスはObservableCollectionを継承していますので、このインタフェースを実装しています。 "System.ComponentModel.INotifyPropertyChanged.PropertyChangedイベントは、+ =または - ="の左側にしか表示されません。 – Quiet

+0

'VM'クラス全体のコードを貼り付けることはできますか?無関係のプロパティを削除します。 – kennyzx

+0

Udpated。 XAMLとコードを削除したのは、コードがたくさんあるからです。 – Quiet

関連する問題