我正在本地化 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/