gpt4 book ai didi

wpf - 如何使用 RESX 本地化 WPF .net-core 应用程序

转载 作者:行者123 更新时间:2023-12-02 19:21:24 26 4
gpt4 key购买 nike

我想使用 .resx 文件本地化 .Net Core 应用程序。谁能给我一个完整的分步解决方案?我是 WPF 和 .Net-Core 的新手。当我更改代码中的当前文化时,什么也没有发生。这是我的代码:

<ToolBar>
<Button Content="{x:Static strings:Resource.NewCustomer}" Command="{Binding NewCustomerDelegateCommand}"/>
</ToolBar>
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("de-DE");
Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("de-DE");
base.OnStartup(e);
}
}

最佳答案

本地化 WPF 应用程序时,您有多种选择。

  1. 使用 native WPF 方法(使用 UID),参见:MSDN .这种方法的缺点在文章中有更详细的解释,但一般说:

    • 它没有使用 resx(这对大多数开发人员来说是很自然的)
    • 不支持在运行时更改语言
  2. 使用由 PublicResXFileCodeGenerator/ResXFileCodeGenerator 生成的 resx 的强类型资源类。

    (请参阅 VS 属性窗口中的自定义工具以获取 resx 文件;PS:第二个生成器创建内部类,因此请记住,它只能在存在本地化 xaml 的同一程序集中使用,并且只能用于WPF 绑定(bind),不使用静态标记扩展)

    这种方法类似于您尝试应用的方法,这意味着在 xaml 中您使用 Binding(或 x:Static)到生成的强类型资源类的属性。这种方法的缺点是生成的强类型资源类不会在文化/语言发生更改时提供任何通知。换句话说,您可以提供字符串、标签等,但它们将在解析/加载 xaml 时解析。之后就变成固定内容了:

    • 不支持在运行时更改语言
  3. 您可以在市场上找到使用 resx 文件本地化 WPF 应用程序的现有解决方案,例如看看:https://www.qube7.com/guides/localization.html

    • 它支持在运行时更改语言(当您设置 Culture.Current 时 UI 会自动刷新)
    • 该解决方案提供了本地化 VS 设计器中支持的 xaml 的方法
    • 本地化 xaml 的方法类似于本地化 asp.net:您可能拥有本地资源(每个 xaml View 的 resx)+ 您可能拥有全局资源(包含共享资源的 resx)
    • 解决方案还为您提供了本地化 View 模型的方法(这也很常见)

    您可以在此处找到资源标记扩展的完整源代码:Resource.cs

关于wpf - 如何使用 RESX 本地化 WPF .net-core 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63014207/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com