我有一个程序,用户可以在其中查看保存在 XAML 中的各种 3D 模型,然后使用 TrackballDecorator 操作 Viewport3D。这些 XAML 文件中包含的转换是我使用问题WPF 3D - 如何保存和加载相机视图?
我最近将项目切换到 .net 4.5 框架以利用 XamlReader 类的新异步功能,这与我访问模型保存的转换的方式产生了冲突。
我目前正在做的是:
private Task<TrackballDecorator> loadModel(string path)
{
var tempVP = new XamlReader().LoadAsync(XmlReader.Create(path)) as Viewport3D;
return new TrackballDecorator() { Content = tempVP, Transform = (tempVP.Camera.Transform as Transform3DGroup) };
}
这不起作用,因为 XamlReader 尚未完成加载,因此返回了一个空 Transform。
我想做的是:
private async Task<TrackballDecorator> loadModelAsync(string path)
{
var tempVP = await new XamlReader().LoadAsync(XmlReader.Create(path)) as Viewport3D;
return new TrackballDecorator() { Content = tempVP, Transform = (tempVP.Camera.Transform as Transform3DGroup) };
}
但是因为 LoadAsync 方法返回的是 anobject
而不是 aTask<object>
我不能使用 await 关键字。有什么方法可以克服或解决这个限制吗?