2015-01-21 96 views
0

嗨我有一個代碼要寫窗口(WPF窗口)激活像點擊窗口或使用alt /選項卡。窗口是主窗體(Windows應用程序)的孩子。我用ToolWindow作爲windowstyle。Windows.Activated在wpf多次觸發

它具有以更新在激活

問題是它觸發多次xamdatagrid。它應該被解僱一次。我不想讓我的代碼多次運行

如何使其工作。請幫助

+3

發佈您的代碼?我們不能給我們不知道的代碼提供建議。 – nvoigt 2015-01-21 10:59:19

+1

每當您的窗口顯示在最前面或禁用/啓用窗口時,都會調用Windows.Activated。 – rraszewski 2015-01-21 11:49:30

回答

0

我完成了。 我用下面的代碼

private void OnAttributeHistoryWindowActivated(object sender, EventArgs e) 
{ 
     var win = ((RoutedEventArgs)(e)).Source as AttributeHistoryWindow; 
     //My Code 
} 

的第一行代碼被射擊後面的活性事件。它永遠不會去我的代碼的下一行enter code here

現在我使用下面的代碼,它的工作原理。

private void OnAttributeHistoryWindowActivated(object sender, EventArgs e) 
{ 
     var win = sender as AttributeHistoryWindow; 
     //My Code 
} 

現在它燃燒一次。

0

Window.Activated Event頁面上MSDN:

當窗口成爲前臺窗口時發生。

Window.Activated事件是應該被多次調用,因此,也許它並不適合你處理的最佳活動。或者,您可以添加一個bool isFirstTime變量並用它來限制您的代碼只被調用一次。就拿這個例子:

private bool isFirstTime = true; 

... 

private void WindowActivated(object sender, EventArgs e) 
{ 
    if (isFirstTime) 
    { 
     isFirstTime = false; 
     // do something here just once 
    } 
} 

然而,由於(從鏈接的頁面)...

一個窗口被激活(成爲前臺窗口)時:

•窗口是第一打開。
•用戶通過用鼠標選擇窗口,按ALT + TAB或從任務管理器切換到窗口。
•用戶單擊窗口的任務欄按鈕。

...你可能會發現這不適合你。