Catel有没有办法同步显示窗口(基于ViewModel)?

问题描述 投票:0回答:1

我正在尝试将大型项目更新为最新的稳定Catel版本,并且需要找到ShowDialog替代方案,在我们的用例中转换为ShowDialogAsync根本不可能。

该项目停止将Catel更新与Catel V4.2集成,并且有一个大型代码库,对使用bool的方法进行~960同步(主线程)调用? IUIVisualizerService.ShowDialog(IViewModel)大部分处理返回的bool?来自ShowDialog并执行条件处理。 因此,我需要找到一个等待窗口关闭而不阻塞UIThread的替代方案,并且目前不可能将所有调用方法更改为异步,使用TaskCommands或由于缺乏人力和公司内部管理而将结果处理移至EventHandlers 。 这是旧的V4.2代码:

var uiVisualizerService = this.GetDependencyResolver().Resolve<IUIVisualizerService>();
return uiVisualizerService.ShowDialog(viewModelToShow);

理想的情况是仍然有一个像ShowDialog一样工作的Catel服务,或者找到一种同步显示DataWindows的不同方式。 编辑: 如果不明显我不能简单地使用await,因为500+类中的方法需要重写而不是手动测试(公司策略)或使用Task.Wait,Task.Result ......等因为WPF限制(如果我在主线程UI上使用阻塞调用冻结由于WPF的复杂性导致它等待在主线程上运行runS的机会,以便实际显示新窗口(实际上所有UI组件)导致不可避免的死锁),所以绝对不能用任何传统方式解决。

c# wpf catel
1个回答
0
投票

自4.2以来,Catel有更多的变化,而不仅仅是异步的东西,如果我是你,那会让我担心。不确定为什么你没有把它保持最新,但你有两个选择:

  1. 坚持4.2(仅建议产品处于维护模式)
  2. 咬紧牙关并进行更新,您将会喜欢新功能和性能升级

4.2于2015年9月1日发布,并于2019年1月28日发布5.9。这是近4年的开发和需要计划的重大变更发布。

© www.soinside.com 2019 - 2024. All rights reserved.