2011-12-14 5 views
2

こんにちは、MVVMでtelerikビジーインジケータを使用しようとしています。 MainwindowにBusyインジケータがあります。ウィンドウ内にあるユーザーコントロールの1つにアクション(ボタンクリック)があると、ユーザーコントロールビューモデルはMinwindowviewModelにメッセージを送信します。メッセージでは、ビジーインジケータが表示されます。しかし、これは動作していません。なぜこれは機能しないのですか?telerikビジーインジケータが表示されない

ユーザーコントロールは、モデル

public class GetCustomerVM : ViewModelBase 
{ 
    private int _CustomerId; 
    public int CustomerId 
    { 
     get { return _CustomerId; } 
     set 
     { 
      if (value != _CustomerId) 
      { 
       _CustomerId = value; 
       RaisePropertyChanged("CustomerId"); 
      } 
     } 
    } 

    public RelayCommand StartFetching { get; private set; } 
    public GetCustomerVM() 
    { 
     StartFetching = new RelayCommand(OnStart); 
    } 

    private void OnStart() 
    { 
     Messenger.Default.Send(new Start()); 
     AccountDetails a = AccountRepository.GetAccountDetailsByID(CustomerId); 
     Messenger.Default.Send(new Complete()); 
    } 
} 

を見るユーザーコントロールのビューモデルがある:メインウィンドウの表示で

private bool _IsBusy; 
    public bool IsBusy 
    { 
     get { return _IsBusy; } 
     set 
     { 
      if (value != _IsBusy) 
      { 
       _IsBusy = value; 
       RaisePropertyChanged("IsBusy"); 
      } 
     } 
    } 
    public WRunEngineVM() 
    { 
     RegisterForMessages(); 
    } 

    private void RegisterForMessages() 
    { 
     Messenger.Default.Register<Start>(this, OnStart); 
     Messenger.Default.Register<Complete>(this, OnComplete); 
    } 

    private void OnComplete(Complete obj) 
    { 
     IsBusy = false; 
    } 

    private void OnStart(Start obj) 
    { 
     IsBusy = true; 
    } 

、ルート要素はAccountDetails a = AccountRepository.GetAccountDetailsByID(CustomerId);は何をするん

<telerik:RadBusyIndicator IsBusy="{Binding IsBusy}" telerik:StyleManager.Theme="Windows7"> 

答えて

5

です?私の推測では、そこに起こっていることは何でもUIスレッド上で実行されているということです。 UIスレッドではすべてがうまくいっているため、UIが更新されてRadBusyIndicatorが表示されることはありません。 OnStartにあるすべての作業をBackgroundWorkerに移動してください(メッセージの送信を含む)。メッセージはUIスレッドをバックグラウンドスレッドから更新するため、を使用してIsBusytrueまたはfalseに設定する必要があるため、ここで問題が発生します。

関連する問題