【问题标题】:Catel show dialog window inside a ViewModel视图模型中的 Catel 显示对话框窗口
【发布时间】:2016-01-21 23:07:03
【问题描述】:

请帮忙。 我把这个结构放在主 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"

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

【问题讨论】:

    标签: c# wpf catel


    【解决方案1】:

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

    我建议您改用此代码:

    await _visualizerService.ShowDialogAsync<PurchaseWindowViewModel>();

    或非异步:

    _visualizerService.ShowDialog<PurchaseWindowViewModel>();

    【讨论】:

    • 感谢您的回答。我发现了我的错误。我从 System.timers 事件处理程序中调用了对话框窗口。我更改了 DispatcherTimer 上的计时器,一切正常。
    猜你喜欢
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多