Catel在ViewModel中显示对话框窗口

时间:2016-01-21 23:07:04

标签: c# wpf catel

请帮助。 我把这个结构放在任何方法中用于主ViewModel

Thread thread = new Thread(() =>
{
     _visualizerService.ShowDialog(new PurchaseWindowViewModel());
});

thread.SetApartmentState(ApartmentState.STA);
thread.Start();

我在PurchaseWindowViewModel.xaml.cs中有例外

  

发生了'System.InvalidOperationException'类型的异常   PresentationFramework.dll但未在用户代码中处理。额外   信息:无法访问Freezable对象   “Catel.Windows.Media.Effects.GrayscaleEffect”

通过线程,因为它不能被冻结。

1 个答案:

答案 0 :(得分:3)

几乎不需要在单独的线程上创建窗口,只在边缘情况下“需要”。如果以下答案无法解决您的问题,请更新您的问题为什么要在非ui线程上使用窗口。

我建议您改用此代码:

await _visualizerService.ShowDialogAsync<PurchaseWindowViewModel>();

或非异步:

_visualizerService.ShowDialog<PurchaseWindowViewModel>();