实体框架加载数据时显示忙指示符

时间:2010-11-19 18:28:08

标签: wpf entity-framework

过去我已经很容易地使用Silverlight,通过声明BusyIndi​​cator作为我的根元素,并将IsBusy属性绑定到RIA Services生成的域上下文的IsLoading属性:

<toolkit:BusyIndicator IsBusy="{Binding Context.IsLoading}" >

由于Entity Framework生成的ObjectContext上似乎没有IsLoading属性,如何在WPF中绑定IsBusy属性?

谢谢

1 个答案:

答案 0 :(得分:0)

我想出了什么:

WPF扩展工具包中的繁忙指示器:

<extoolkit:BusyIndicator IsBusy="{Binding IsBusy}" BusyContent="Loading data..." >

在我的基类视图模型中,我添加了以下方法:

protected void ExecuteBackgroundProcess(Action action)
    {
        IsBusy = true;

        Task task = Task.Factory.StartNew(() => action()).ContinueWith((s) => this.IsBusy = false);
    }

当我想从服务器加载集合时,我可以从派生的视图模型调用:

this.ExecuteBackgroundProcess(() =>
{
    var collection = _securityRepo.TakeOfType<Security>(10).ToObservableCollection();

    DispatcherHelper.CheckBeginInvokeOnUI(() =>
    {
        Securities = collection;
        RaisePropertyChanged("Securities");
    });                       
});

还有一个更强大的&amp; CodeProject上的完整解决方案: http://www.codeproject.com/KB/WPF/ThreadingComponent.aspx?msg=3319891