WatermarkTextBoxを使用していて、その値をビューモデルの整数プロパティにバインドしています。重要なのは、値が設定されていない場合、WatermarkTextBoxは透かしを表示する必要がありますが、値が設定されていない場合(ビューが表示されている場合など)に整数にバインドされるとすると、0が表示されます。
OneWayToSource
双方向バインディングが必要なため、使用できません。何か案が?
WatermarkTextBoxを使用していて、その値をビューモデルの整数プロパティにバインドしています。重要なのは、値が設定されていない場合、WatermarkTextBoxは透かしを表示する必要がありますが、値が設定されていない場合(ビューが表示されている場合など)に整数にバインドされるとすると、0が表示されます。
OneWayToSource
双方向バインディングが必要なため、使用できません。何か案が?
コンバーターを使用できます。値が0の場合、コンバーターは空の文字列を返し、透かしを表示します。0でない場合は、数値の文字列表現を返します。
public class Int32ToStringConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
int v = (int)value;
if (v == 0)
return string.Empty;
return v.ToString();
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
string s = (string)value;
if (string.IsNullOrEmpty(s))
return 0;
return int.Parse(s);
}
}
もう1つのオプションは、プロパティをint?
(Nullable<int>
)に変更し、その初期値をnullに設定することです。