2

今天,我尝试异步实现 View-Model。我找到了这篇文章。那一刻,我觉得这并不像我想象的那么容易……

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

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

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

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

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

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

4

0 回答 0