删除或本地化默认服务对话框的消息

Remove or localize default service dialogs' message

我正在使用 this method 来本地化我的 WPF 项目。

我还使用 Catel 作为我的 MVVM 框架。 Catel 附带了一些显示对话框的服务;问题是我不知道如何本地化它们。


首先,我想从 IPleaseWaitService 显示的 PleaseWaitWindow 中删除 "Please wait" 消息。如何实现?您可以使用

显示对话框
pleaseWaitService.Show(() => doStuff(), "status")

但是 如果你输入一个 null 或空字符串而不是 "status",它只会显示默认的 "Please wait" 消息(这显然是一种预期的行为).

如果无法实现,我必须用什么方式来翻译消息?我查了一下 ILanguageService,但没能做任何有效的事情。

有几种选择:

  1. 使用Catel localization
  2. 在服务定位器中注册您自己的类型

请注意,PleaseWaitService 是一个棘手的服务(因为它 运行 在单独的线程中,等等)。在我们从事的大多数项目中,我们所做的就是用这个替换它:

https://github.com/Orcomp/Orchestra/blob/develop/src%2FOrchestra.Core%2FOrchestra.Core%2FServices%2FPleaseWaitService.cs

我使用的是 Catel 4.4.0,在这个版本中我可以在 pleaseWaitService.Show()

中设置消息

例如:

iPleaseWait.Show("message");
// do some stuff
iPleaseWait.Hide();

"message" 你可以用从资源中获取字符串的变量替换。