2016-09-12 10 views
1

Xamarin XAMl/WPFでは、StringFormatを使用しようとしましたが、動作しませんでした。 1桁から3桁の範囲の整数値をバインドする必要がありますが、値の変更にUIが変更されないように先行スペースが必要です。数字の先頭に空白がある場合

は私がXAMLで、次の試してみましたが、それはうまくいきませんでした:

public string FormattedJpegQualityValue 
    { 
     get 
     { 
      return string.Format("{0,3:###}", JpegQualityValue); 
     } 
    } 

がいずれかである:

<Label Text="{Binding JpegQualityValue, StringFormat={}{0,3:###}}" /> 

、次の作品:背後にある余分なコードと

<Label Text="{Binding FormattedJpegQualityValue}" /> 

XAMLでのみ動作し、フォーマットのためのコードを変更する必要はありません? ほとんどのコードはWPFに似ているので、私はWPFタグ/キーワードを追加しました。

答えて

0

StringFormatの式をStringFormat='{0,3:###}'に変更してください。

Xaml式パーサーが{}文字で混乱しないように、StringFormatに指定する値は一重引用符で囲む必要があります。

詳細については、Xamarin.Forms documentationを参照してください。

+0

それは良い仕事をした。 – Vishnu

0

あなたはPadLeft使用することができます

JpegQualityValue.ToString().PadLeft(3,'0'); 

をそうでない場合、あなたは

を使用することができますあなたは自分の価値観でプレーする必要がある場合、通常はWPFで行われているものであるコンバータを使用することができ

<Label Text="{Binding FormattedJpegQualityValue, 
       Converter={StaticResource ZeroesConverter}}"}" /> 

// obviously, following is not in your xaml. 
public class ZeroesConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     // put logic here. 
     // convert int to string, look at length, append zeroes, or use the string formatter if you want 
     value.ToString().PadLeft(3,'0'); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     // throw some exception. you don't need this 
    } 
} 
+0

私はそれを知っていましたが、CodeBehindクラスにコードを追加してしまうことは避けられました。私はCodeBehindを変更せずにXAMLで純粋に行うことができる方法を探していました。 – Vishnu

+0

@Vishnuええ、現時点でXAMLからやってもらえることは何もないので、他の人が考えているかもしれません。 – Noctis

関連する問題