こんにちは私はWPF、EF、MVVM(.NET4.0)を使用してアプリケーションを設計しています。
データをバインドしているときにUIがフリーズするという問題に直面しています。これは遅延読み込みが原因だと思います。
MVVM:
ThreadPool.QueueUserWorkItem(state =>
{
IsProgressBarVisible(true);
var service = Context.SomeModel.ToList();
BgServiceCompleted(service);
});
XAML:
"{Binding OrderItemViews.SOmeModel_A.SomeModel_B.SOmeField}"
"{Binding OrderItemViews.Country.Name}"
いくつかのモデル:
public class SomeModel_A
{
public int Id { get; set; }
....
public int SomeB_Id { get; set; }
public virtual SomeModel_B SomeModel_B { get; set; }
}
私はこの問題の解決策を見つけました。
1)ItemsSource-BindingでIsAsync-Propertyを設定します。
"{Binding OrderItemViews.SOmeModel_A.SomeModel_B.SOmeField, IsAsync=true}"
インターフェイスはフリーズしませんが、しばらくすると値が表示されます。これにより、一部のユーザーが混乱します。
2)インクルードデータのロードにインクルードを使用します。例えば:
Context.SomeModel.Include(a => a.SomeModel2).Load();
しかし、私の場合、ContextにはIncludeがありません。なんで?
この問題を解決するための最良の方法はどれですか?
それをどのように行うべきか、またはそれについて読んで学ぶことができる有用なリソースについてのガイダンスを教えてください。ありがとう