2013-05-22 86 views
0

我在我的WPF應用程序中有一個自定義的消息框。 問題是:當我在不是從Window派生的類中調用它時,此消息框未顯示 。 沒有編譯錯誤。引用被正確添加。我不會調用這個類中的任何UI組件。自定義的消息框沒有進入wpf

有調試時發生異常:「調用線程必須爲STA,因爲許多UI組件都需要這種」

+0

我們看一些代碼,你做了什麼。 – Batuu

+0

顯示您的代碼,請 –

+6

我做了一架飛機,問題是它不能飛。 –

回答

4

我有同樣的問題,這個問題是,當我們創建自定義的消息框,它從UI派生像Windows這樣的組件,然後當我們嘗試從我們的應用程序中的代碼創建的線程創建並顯示自定義MessageBox時,我們得到以下錯誤:

「調用線程必須是STA,因爲許多UI組件需要這個「。

爲「mottukutty」曾這樣評價自己的問題,解決方法是使用應用程序的調度展示我們的定製MessageBox的,是這樣的:

public partial class MessageBox : Window 
{ 
    private static MessageBox _messageBox; 

    public static MessageBoxResult Show(string message, MessageBoxType type, 
     string okText = null, string yesText = null, string noText = null) 
    { 
     Application.Current.Dispatcher.Invoke(show); 

     void show() 
     { 
      _messageBox = new MessageBox(message, type, okText, yesText, noText); 

      _messageBox.ShowDialog(); 
     } 

     return _messageBox.Result; 
    } 
}