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 の一部)を使用して設計時のデータをモックする 2 つ目の方法があります。この 2 番目の嘲笑の方法についてどう思いますか? それは私の問題を解決しますか? このソリューションについて考えると、非常に奇妙な方法で動作すると思います。プログラムをコード全体でコンパイルし、このプロパティを false に設定する必要がありますが、条件は常にチェックされます。ではない?そうでない場合、実際にどのように機能しますか?

4

0 に答える 0