如何使用工厂方法

时间:2015-11-04 17:32:59

标签: c# xaml mvvm windows-runtime uwp

在构造函数中使用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尚不可用,是否有解决办法?

1 个答案:

答案 0 :(得分:1)

您的问题的一个可能解决方案是使用MVVM Light。

MVVM Light实际需要的是SimpleIoc类和this函数。

通过使用这个,您可以构建一个类似的ViewModel定位器,我做here,除非您在注册ViewModel时传递工厂方法。 之后,您可以像我here一样简单地绑定它。

显然不是你想要做的,而且是一种解决方法,但是在处理Windows应用程序时使用IoC容器(和MVVM Light或类似的工具包)无论如何都是很好的做法,越早得到它的诀窍,更好。 ;)