Re: [WPF] Prism Как из ViewModel показать диалоговое окно?
От: Fortnum  
Дата: 09.06.11 12:53
Оценка:
Здравствуйте, Glas, Вы писали:

G>Делаю так:

G>
G>Dialog dialog = new Dialog(){Owner = System.Windows.Application.Current.MainWindow};
G>dialog.ShowDialog();
G>

G>Получаю исключение:
G>The calling thread must be STA, because many UI components require this.

Вы new Dialog() не из UI-потока вызываете. Попробуйте сделать так:

Dispatcher.BeginInvoke((Action)(()=>
{
    Dialog dialog = new Dialog(){Owner = System.Windows.Application.Current.MainWindow};
    dialog.ShowDialog();
}));


А свойство Dispatcher объявите где-нибудь в классе ViewModel'и:

public class ViewModel
{
    public Dispatcher Dispatcher { get; set; }
}


И предварительно проинициализируйте у ViewModel'и свойство Dispatcher из UI-потока, например в конструкторе ViewModel'и:

public ViewModel()
{
    Dispatcher = Dispatcher.CurrentDispatcher;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.