异步MVVM和设计时数据

时间:2015-04-13 21:45:00

标签: c# design-patterns asynchronous mvvm design-time-data

今天,我尝试异步实现View-Model。我找到了this article。那一刻我觉得我想象不是那么容易......

我明白为什么会这样。但遗憾的是,当我想使用Blend模拟我的设计时数据时(使用SampleData.xaml进行模拟),使用此代码是不可能的,因为Blend不允许以这种方式模拟通用数据。所以我想到了一些像这样的重构:

public IEnumerable<MyModelType> Data { get { return _task.Result; } }
private NotifyTaskCompletion<IEnumerable<MyModelType>> _task;

并从XAML调用Data,而不是调用Task.Result

现在我可以再次模拟所有内容,但是当我运行代码时,我没有多次获取数据,因为任务具有WaitingForActivation状态。我不了解每个细节的机制,但经过一些谷歌搜索后我得到了我应该使用async / await语法。它当然有道理,但我无法做到这一点,因为我的Data是一个属性,它不能是async。它对我来说没有意义。

您对我的问题有任何解决方法(或漂亮的解决方案)吗?

使用IsInDesignMode(MVVM Light的一部分)模拟设计时数据的第二种方法。你怎么看待第二种嘲弄方式?它能解决我的问题吗?当我考虑这个解决方案时,我认为它以如此奇怪的方式工作:它应该用整个代码编译我的程序并将此属性设置为false,但仍然总是检查条件。不是吗?如果没有,它是如何实际工作的?

0 个答案:

没有答案