InvokeOperation を使用して、ViewModel の DomainContext からブール値を取得しようとしました。
サーバーへの呼び出しは、呼び出しを含めて非同期であるため。呼び出しが完了するのを待つ必要があります (つまり、ctx.epidemicContext().Completed += [イベント ハンドラー])。インボーク・コンプリート・イベントでは、ブール値を取得してプロパティを設定しています。
_context.IsChangeLogStarted(OnInvokeCompleted, null);
//OnInvoke プロパティの設定が完了
private void OnInvokeCompleted(InvokeOperation<bool> invOp)
{
IsChangeLogExist = invOp.Value;
}
//財産
public bool IsChangeLogExist
{
get { return this._IsChangeLogExist; }
set { this._IsChangeLogExist = value; }
}
私のビューでは、「IsChangeLogExist」をボタンの IsEnabled プロパティにバインドしようとしています。//意見
<Button IsEnabled="{Binding IsChangeLogExist}" Command="{Binding Source={StaticResource ProxyViewModel}, Path=StartChangeLogCommand}" CommandParameter="{Binding}" />
しかし問題は、アプリケーションを実行すると、ボタンの IsEnabled プロパティが IsChangeLogExist のデフォルト値 (false) にバインドされ、Invoke の非同期操作のためにドメインコンテキストからプロパティ値を設定せずにバインドされることです。呼び出しコールバックが OnInvokeCompleted を呼び出す前に、ボタンの Isenabled プロパティは既に値を取得しています。value は常に false (値を設定しておらず、invoke 呼び出しがまだサーバーにあるため)
サーバーからbool値を取得してOnInvokeCompletedメソッドで設定した後、ボタンのIsEnabledプロパティをバインドする方法を教えてください。