1

您好我正在使用 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();

但在我的情况下 Context 没有Include。为什么?

解决这个问题的最佳方法是什么?

你能给我一个关于我应该如何做的指导或者我可以阅读和了解它的任何有用的资源吗?谢谢

4

1 回答 1

1

Include不是标准库的一部分,您必须添加using System.Data.Entity;. 否则,返回的类型是Context.SomeModel什么?

于 2012-10-26T10:53:18.507 回答