您好我正在使用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)使用Include加载包含数据。 例如:
Context.SomeModel.Include(a => a.SomeModel2).Load();
但在我的情况下,上下文没有包含。为什么呢?
哪种解决此问题的最佳方法?
请您给我一个指导,说明我该怎么做或者我可以阅读和了解的任何有用资源? 感谢