こんにちは、テレリック ビジー インジケーターを MVVM で使用しようとしています。Mainwindow に Busy インジケータがあります。ウィンドウ内にあるユーザー コントロールの 1 つにアクション (ボタン クリック) があると、ユーザー コントロール ビュー モデルは MinwindowviewModel にメッセージを送信します。メッセージにビジー インジケータが表示されます。しかし、これは機能していません。なぜこれが機能しないのですか?
ユーザー コントロール ビュー モデル
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;
}
メイン ウィンドウ ビューでは、ルート要素は
<telerik:RadBusyIndicator IsBusy="{Binding IsBusy}" telerik:StyleManager.Theme="Windows7">