在我搜索这个问题的常见解决方案是添加一个事件处理程序以在调用操作完成后进行处理。
不幸的是,我的 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;
}