【发布时间】:2016-02-05 07:56:33
【问题描述】:
在构造函数中使用 async/await 的需要将我引向实例化对象的静态工厂方法。如果没有 async/await,我的对象会在 XAML 中实例化,如下所示:
<viewModel:MyClass x:key="myClass"/>
如果我使用静态工厂方法,调用它 CreateAsync(),对象实例化代码如下:
MyClass myClass = await MyClass.CreateAsync();
在代码隐藏中一切都很好,并且可以按预期工作,但如果可能的话,我希望在 XAML 中与上述代码等效。快速搜索建议使用新属性 FactoryMethod 来指定工厂方法。
<viewModel:MyClass x:FactoryMethod="CreateAsync" x:key="myClass"/>
但是,问题是 x:FactoryMethod 仅在 XAML 2009(而不是 XAML 2006)中受支持。此外,根据我的简短研究,XAML 2009 尚不支持。
那么,在给定静态工厂方法的情况下,如何在 XAML 中实例化一个对象,如上所示,并带有一个简单的示例?考虑到 x:FactoryMethod 尚不可用,是否有解决方法?
【问题讨论】:
-
如果有更好的路线,我不会挂在异步构造函数上。我希望在绑定到数据对象时初始化数据,并且初始化恰好是(并且需要是!)异步的。从 XAML 中完成所有操作将是理想的。我可以从 ViewModel 执行此操作,没问题,但我认为,如果可能的话,全 XAML 解决方案更优雅。我假设应该可以在 XAML 中做到这一点,但我可能错了。
标签: c# xaml mvvm windows-runtime uwp