wpf - 在 WPF 中本地化

标签 wpf localization

我正在本地化 WPF 应用程序。需要根据 XAML 中的特定 UI 文化在运行时更改数据网格列标题.

尽管我可以通过使用 LocBaml 在后台代码和 XAML 中进行本地化工具。我无法通过 XAML 中的一个特定场景实现它。场景是我正在解析 XAML,因为我正在将它加载到 XML 文件中并解析..

所以现在当我解析它时:

<dg:DataGridColumnHeader Header="{x:Static findlocale:My.Resources.String.anylocalword}"></dg:DataGridColumnHeader>

其中 findlocale 是 XAML 命名空间关键字,我收到错误:

XAML parse error. Cannot find type My.Resources.String.localword in the xaml namespace.

为什么这在这种情况下不起作用?我该如何克服它?

最佳答案

我敢打赌您的 findlocale XML namespace 不正确。如果你有类似的东西:

namespace MyNameSpace.MySubNamespace {
    public class MyClass {
        public static string MyProperty { get; set; }
    }
}

那么您的 XML 命名空间必须声明为 xmlns:findlocale="clr-namespace:MyNameSpace.MySubNamespace"为了使用 {x:Static findlocale:MyClass.MyProperty} .

不能xmlns:findlocale="clr-namespace:MyNameSpace" 那样声明您的XML 命名空间并像{x:Static findlocale:MySubNamespace.MyClass.MyProperty}一样使用它.

此外,如果您有任何嵌套类/枚举,则必须使用 +代替 . 登录.所以如果你有:

namespace MyNameSpace.MySubNamespace {
    public class MyClass {
        public class MyNestedClass {
            public static string MyProperty { get; set; }
        }
    }
}

访问MyProperty , 你需要像 xmlns:findlocale="clr-namespace:MyNameSpace.MySubNamespace" 这样声明你的 XML 命名空间并像 {x:Static findlocale:MyClass+MyNestedClass.MyProperty} 一样访问它.

关于wpf - 在 WPF 中本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7802581/

相关文章:

wpf - WPF Datagrid 的 "pressed the delete key"事件是什么?

c# - 如何获取我的 Windows 窗体应用程序已本地化为的所有语言的列表?

Xcode\Swift 中的 iOS 应用程序本地化

android - 如何根据手机设置中选择的语言更改android中Launcher中应用程序的名称?

iPhone/iOS : How Do I Tell What Localization The Phone is Using At Runtime?

WPF 与 StringFormat 的绑定(bind)不适用于工具提示

c# - 在 WPF 中模拟按键

c# - 使用 LINQ 和高度嵌套的 XML 创建类对象

c# - 绑定(bind)列表和 UI 控件,编辑时不更新

iphone - 我可以将 uilabel 链接到 Interface Builder 中的可本地化字符串吗?