2012-04-12 15 views
2

Silverlight XAML/C#アプリケーションをMetroに変換しています。 C#コードでは問題ありません。 XAMLについては、私が読んだところでは、プロセスを簡素化するためのXAMLに対する新しいサポートがあります。ただし、同じresxファイルを再利用して、XAMLの旧式の銀色のメカニズム、つまりマークアップ拡張機能やバインディングを使用することをおすすめします。 MarkupExtensionを試しただけですが、サポートしていないようです。リソースバインディングをどのように変換しますか。私の目標は、リソースファイルの名前と値のペアを再利用して、新しいMetroバインディングメカニズムを使用できないようにすることです。Windows 8 Metro XAMLローカリゼーション

提案がありますか?

Silverlightでこのような何か:

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" /> 

答えて

1

すべてのリソースファイルを変更するコンバータを作成することになります。 Silverlightリソースファイルの「somekey」は「somekey.Content」に変換されます。これにより、ButtonなどのContentプロパティを持つUI要素が自動的に処理されます。

0

名前と値のペアを変更しない場合は、ファイル.reswにアクセスするには、ResourceLoaderクラスを使用する必要があります。

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

これは、バインドするためのかなりのプロパティを作成し、XAMLを新しいバインド可能なプロパティに変更する必要があることを意味します。結局、新しいMetroのローカリゼーションへの変更を検討する価値はあるかもしれません。

ローカライゼーションに関する完全な例は、win8 dev centerにあります。

関連する問題