[英]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.