Здравствуйте, 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;
}