2016-12-23 7 views
1

私はMvvmCrossを使用してXamarinでAndroidアプリを作成しています。ローカライズ可能なフォーマット文字列によるデータバインディング

私のUIには、検索フィールドとボタンがあります。私はボタンが検索フィールドにあるものを反映するようにしたい。したがって、検索フィールドにAlamo Drafthouseがある場合は、Create "Alamo Drafthouse" Venueと言うボタンが必要ですが、Create "x" Venue文字列はstrings.xmlファイルから取得してローカライズする必要があります。

攻撃の私の現在の計画では、文字列リソースのIDを指定するConvertParameterを使用して、検索語を取り、書式設定を行いValueConverterを作成することですので、私はこのような何かを行うことができると思います。

<Button local:MvxBind="Text SearchTerm, Converter=FormatResource, ConvertParameter='create_view'" /> 

create_viewは、strings.xmlで定義された文字列リソースです。

私は、これを行うより良い方法があるかどうか尋ねるべきだと思いました。ある?

答えて

1

テンプレートの文字列をstrings.xml(Core/PCLプロジェクトからではなくAndroidプロジェクトから)にする場合は、FormatResourceConverterという独自のコンバータを作成することができます。

public class FormatResourceConverter: IMvxValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     //value would be your draft house 
     //parameter would be a name of your string in strings.xml 
     var stringValue = ... //get your string from Android string resources 
     return String.Format(stringValue, value);  
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

Here is a simple answer how to get string from Android resources in Xamarin

関連する問題