ComboBox项目加载事件wpf?

时间:2011-01-12 20:26:30

标签: wpf binding

我有一个组合框,它将ItemsSource设置为一个名为DATA的ObservableCollection属性,通过绑定。 此列表包含大量数据,因此组合框需要一些时间才能完全加载所有项目。

我有一个后台工作程序获取所有信息并在完成后设置ObservableCollection属性DATA。在发生这种情况时,我会显示一个进度指示器,但是,在设置了ObservableCollection DATA之后,UI似乎仍然会挂起很长一段时间,然后组合框将被加载所有项目。

组合框上是否有一个事件让我知道UI中所有项目的正确呈现时间?

由于

1 个答案:

答案 0 :(得分:-1)

您可以使用以下代码作为参考,此处进度条和搜索都在同一个线程中运行,Dispatcher用于通知UI:

        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>)
    {
    }

更新:由于版权问题,只需更改实施,希望您不要介意。