2

Silverlight XAML/C# アプリを Metro に変換しています。C# コードの場合は問題ありません。XAML については、私が読んだところによると、プロセスを簡素化するための XAML の新しいサポートがあります。ただし、同じ resx ファイルを再利用したいと考えているため、XAML の古い Silverlight メカニズム、つまりマークアップ拡張またはバインディングを好みます。MarkupExtension を試しましたが、サポートしていないようです。リソース バインディングを変換するにはどうすればよいですか。私の目標は、リソース ファイル内の名前と値のペアを再利用することなので、新しい Metro バインディング メカニズムを使用することはできません。

なにか提案を?

シルバーライトでこのようなもの:

XAML:

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

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」に変換されます。これにより、Button などの一部の UI 要素が Content プロパティで自動的に処理されます。

于 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 dev centerにあります。

于 2012-05-05T14:30:25.730 に答える