3

OS:WP8

コンバーターがバインディングを取得した結果である文字列をフォーマットしようとしています。文字列形式のデータのローカリゼーションを除いて、すべてが機能します。文字列形式のデータは、どのように組み込むかについて最も曖昧な考えがありません。Microsoftのドキュメントはこれについてそれほど明確ではなく、誰かが私を正しい方向に向けることができるかどうか疑問に思っています。

<TextBlock Text="{Binding Date, StringFormat='Received On: {0}', ConverterParameter=shortdatewithyear, Converter={StaticResource DateTimeToTimeConvert}}"/>

やりたいことは完全に壁から外れているようには見えません。

ありがとう!

-コード

4

3 に答える 3

2

あなたの特定のケースでは、コンバーターのリソース ファイルから文字列を取り出すと、.Net が提供するローカリゼーションが機能します。これはおそらく、文字列を構築する場合により重要であり、構築する順序は言語によって変わる可能性があります。

標準的な方法でリソース ファイルを作成します。"MyResource.resx" を使用して、既定の言語の文字列を保存します。次に、"MyResource.Fr-fr.resx" という名前のローカライズ バージョンを作成できます (フランス語を使用している場合)。 . これは、文字列の最初のインスタンスで自動的に読み込まれ、検索されます。見つからない場合、コードはデフォルトのリソース ファイルから文字列を取り出します。この方法では、すべてを翻訳する必要はありません。US と GB のスペルの違いに役立ちます。

一般に、これを取得すると、XAML にローカライズされた文字列を含めることができます

ローカライズ クラスを追加します。

public class Localize : INotifyPropertyChanged
{
    #region INotifyPropertyChanged Members

    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyChange(String name)
    {
        if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(name));
    }

    #endregion

    #region 'Public Properties'

    //Declarations
    private static Resources.MyResources _myResources = new Resources.MyResources();

    public Resources.MyResources myResources
    {
        get { return _myResources; }
        set { NotifyChange("MyResources"); }
    }

    #endregion
}

次に、XAML でこれをユーザー コントロールのリソースに追加します。

<local:Localize x:Key="myResource"
                xmlns:local="clr-namespace:MyProject" />

次に、それを使用できます。

<TextBlock Text="{Binding myResource.MyString, Source={StaticResource myResource}}"/>
于 2013-01-24T12:32:43.520 に答える