簡體   English   中英

WPF SelectionChanged事件在更改選項卡之前執行操作

[英]WPF SelectionChanged event do the action before tab change

我的WPF應用程序中有SelectionChanged事件。 我希望當標簽更改為執行某些操作時,但首先我希望標簽在操作開始之前進行透視更改。 我正在使用后台工作人員來完成這項工作。 我的代碼是:

    private void Tab_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (tab1.IsSelected)
        {
            //this line is not working
            tabcontrol.SelectedIndex = 1;
            wNetTest = new BackgroundWorker();
            wNetTest.DoWork += new DoWorkEventHandler(worker_DoWork);
            wNetTest.RunWorkerCompleted += worker_RunWorkerCompleted;
            wNetTest.WorkerReportsProgress = true;
            wNetTest.WorkerSupportsCancellation = true;
            wNetTest.RunWorkerAsync();

        }
    }

    void worker_DoWork(object sender, DoWorkEventArgs e)
    {
        //do the job
    }

您的問題是您的代碼同步運行。 因此, Tab_SelectionChanged事件處理程序的每一行都將您看到TabItem更改之前運行。 要解決此問題,您只需要異步運行長時間運行的進程。 最簡單的方法之一是:

private void Tab_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if (tab1.IsSelected)
    {
        //this line is not working
        tabcontrol.SelectedIndex = 1;
        Task.Factory.StartNew(() => LongRunningMethod(parameter));

    }
}

private void LongRunningMethod(object parameter)
{
    // perform long running process here
}

parameter輸入參數是可選的......如果您不需要,只需將其刪除即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM