私の検索では、この問題の一般的な解決策は、呼び出し操作が完了したら処理するイベントハンドラーを追加することです。
残念ながら、私のIValueConverterは値を返す必要があるため、ハンドラーを使用してもあまり役に立ちません。また、操作が完了するまでdo / whileループを試しましたが、ループが閉じません。
単純な待機操作も試しましたが、それでもnullが返されます。DomainServiceが正しい値を返すことは知っていますが、Converterはそれを認識できません。
この場合、私にできることはありますか?コンバーターが機能することで、私が予測できる将来の問題のほとんどすべてを取り除く/減らすことができます。
私のコード:(私はこのようなものが必要です)
InspectDomainContext context = new InspectDomainContext();
string name;
InvokeOperation<string> inv;
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string id = (string)value;
inv = context.GetName(id);
inv.Completed += new EventHandler(inv_Completed);
// return here after the handler has completed
return name;
}
void inv_Completed(object sender, EventArgs e)
{
name = inv.Value;
}