我是globalizing我的 WinRT 应用程序和我无法在我的组合框中使用语言资源。我可以在使用 Text 属性但不使用 x:string 的 TextBlock 中使用它。我做错了什么?
TextBlock x:Uid="Priority" Text="Default"></TextBlock>
<ComboBox>
<x:String x:Uid="Color">Default1</x:String>
<x:String x:Uid="Color.Text">Default2</x:String>
</ComboBox>
编辑
为什么我不能在 XAML 代码中使用资源字符串填充 ComboBox 元素?我知道我可以在 ComboBox 中添加 TextBlock 元素以使用字典,或者像我现在所做的那样,通过代码加载它们,但这不是对我的问题的回答。
最佳答案
据我所知,当您在 xaml 中使用时,它是一个编译时间常量,无法在运行时更改并绑定(bind)到资源。这就是为什么您可能会在组合框中看到 Default1 或 Default2 作为项目。
我能够找到解决您问题的方法。
想法是,在组合框中,您应该使用 ComboBoxItem 并将 x:Uid 设置为资源的值。但在资源文件中,实际名称应该是 Name.Content,因为 ComboBoxItem 默认有一个 ContentPresenter 而不是 TextBlock。
所以这是对我有用的代码: 在我的资源文件中:
Combo.Content ComboBox1
在我使用的 Xaml 中:
<ComboBox>
<ComboBoxItem x:Uid="Combo" />
</ComboBox>
这将使用项目“ComboBox1”(来自资源文件)填充 ComboBox。
我没有测试过它是否适用于不同语言的资源文件,但我看不出它为什么不适用。
关于c# - 在组合框中使用资源的 XAML 全局化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15045994/