Отображение индикатора занятости, когда Entity Framework загружает данные - PullRequest
3 голосов
/ 19 ноября 2010

Я уже делал это довольно легко в Silverlight, объявив BusyIndicator своим корневым элементом и связав свойство IsBusy со свойством IsLoading контекста домена, созданного службами RIA:

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

Поскольку в ObjectContext, сгенерированном Entity Framework, похоже, отсутствует свойство IsLoading, как я могу связать свойство IsBusy в WPF?

Спасибо

1 Ответ

0 голосов
/ 22 ноября 2010

Что я придумал:

Индикатор занятости из расширенного набора инструментов 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");
    });                       
});

Существует также более надежное и полное решение для CodeProject: http://www.codeproject.com/KB/WPF/ThreadingComponent.aspx?msg=3319891

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...