ComboBox элементы загружены событие wpf? - PullRequest
0 голосов
/ 12 января 2011

У меня есть выпадающий список, в котором ItemsSource установлено свойство ObservableCollection, называемое DATA посредством связывания. Этот список содержит огромные данные, поэтому для того, чтобы поле со списком полностью загрузило все элементы, потребуется некоторое время.

У меня есть фоновый работник, который получает всю информацию и устанавливает свойство ObservableCollection DATA, когда закончите. В то время как это происходит, я показываю индикатор прогресса, однако после того, как я установил ObservableCollection DATA, пользовательский интерфейс все еще висит некоторое время, а затем загружается выпадающий список всех элементов.

Есть ли в выпадающем списке событие, которое сообщает мне, когда все элементы были правильно отображены в пользовательском интерфейсе?

Спасибо

1 Ответ

0 голосов
/ 12 января 2011

Вы можете использовать следующий код в качестве ссылки, и здесь индикатор выполнения и поиск выполняются в одном потоке, а диспетчер используется для уведомления пользовательского интерфейса:

        DoWorkEventHandler workHandler = null;
        RunWorkerCompletedEventHandler doneHandler = null;
        Action<parameters> actionCompleted = null;

        BackgroundWorker worker = new BackgroundWorker();

        worker.DoWork += workHandler =
            delegate
            (
                object oDoWrk,
                DoWorkEventArgs eWrk
            )
            {
                worker.DoWork -= workHandler;
                ServiceProxy service = new ServiceProxy();
                service.EventWorkCompleted += actionCompleted =
                    delegate(<parameters>)
                    {
                        service.MethodWorkCompleted -= actionCompleted;
                        currentDispatcher.BeginInvoke(
                            new Action<<parameters>>(
                                OnActionCompleted ), <parameters>);
                    };

                Messenger.Default.Send(
                    new ShowProgressViewMessage( new ProgressViewModel( "Loading..." ) ) );

                service.ServiceMethod();
            };

        worker.RunWorkerCompleted += doneHandler =
            delegate
            (
                object oDone,
                RunWorkerCompletedEventArgs eDone
            )
            {
                Logger.LogVerbose( "Method Called" );

                worker.RunWorkerCompleted -= doneHandler;
            };

        worker.RunWorkerAsync();


    private
    void OnActionCompleted(<parameters>)
    {
    }

Обновление: Просто измените реализацию из-за проблем с авторским правом, надеюсь, вы не против.

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