2

我正在将 silverlight XAML/C# 应用程序转换为 Metro。对于 C# 代码,没有问题。对于 XAML,根据我的阅读,有对 XAML 的新支持以简化流程。但是,我希望重用相同的 resx 文件,因此我更喜欢 XAML 的旧 silverlight 机制,即标记扩展或绑定。我刚刚尝试了 MarkupExtension 但它似乎不支持。如何转换资源绑定。请注意,我的目标是重用资源文件中的名称-值对,因此我将无法使用新的 Metro 绑定机制。

有什么建议吗?

在silverlight中是这样的:

XAML:

<sdk:TabItem Header="{Binding Path=Resource.charts, Source={StaticResource LocalizedStrings}}"/>

本地化字符串.cs

    public partial class LocalizedStrings
    {

        private static Resources.Resource resource = new Resources.Resource();

        public Resources.Resource Resource { get { return resource; } }
    }

由于旧代码重用,我将无法使用的新 Metro 风格本地化:

<TextBlock x:Uid="HelloWorld" />
4

2 回答 2

1

我最终编写了一个转换器来更改我所有的资源文件。Silverlight 资源文件中的“somekey”被转换为“somekey.Content”。这将使用 Content 属性自动处理一些 UI 元素,例如 Button。

于 2012-05-09T23:54:02.860 回答
0

如果您不想更改名称-值对,则必须使用ResourceLoader该类来访问.resw文件。

var resourceLoader = new ResourceLoader();
// access a given name key
var var someValue = resourceLoader.GetString("someKey");

这意味着您还必须编写相当多的属性来绑定并将 XAML 更改为新的可绑定属性。因此,也许值得考虑改用新的 Metro 本地化。

一个完整的本地化示例可以在win8 开发中心找到。

于 2012-05-05T14:30:25.730 回答