2011-09-28 25 views
0

我不明白爲什麼WPF用戶控件和Windows窗體用戶控件的行爲是不同的。我添加窗口中加載事件,這只是顯示信息框:更改主題調用UserControl_Loaded事件

private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 
     MessageBox.Show("Main Window Loaded","WPF"); 
    } 

此外,我創建了一個用戶控制和添加加載事件:

private void UserControl_Loaded(object sender, RoutedEventArgs e) 
    { 
     MessageBox.Show("User Control Loaded.","WPF"); 
    } 

我已經把在主窗口中該用戶的控制。

當我啓動這個,我得到消息框,用戶控件以及窗口。

現在,當我將我的主題從Aero更改爲任何高對比度時,再次顯示用戶控件的消息框。

爲什麼會發生這種情況?爲什麼這與Windows窗體不同?我該怎麼做才能避免多次顯示?

Wajeed

回答

1

您可以創建bool變量,它將指示是否顯示MessageBox。

bool isUserMessageBoxShown = false; 
private void UserControl_Loaded(object sender, RoutedEventArgs e) 
{ 
    if (!isUserMessageBoxShown) 
    { 
     MessageBox.Show("User Control Loaded.","WPF"); 
     isUserMessageBoxShown = true; 
    } 
} 
2

你可以有存儲的又與否是否所示的對話框狀態的布爾字段。如果您更改主題,UI元素將重新加載,所以自然會再次觸發事件。

if (!_diagWasShown) 
{ 
    _diagWasShown = true; 
    //Show dialogue 
}