Bộ chuyển đổi giá trị này sẽ thực hiện thủ thuật:
public class StringToNullableDecimalConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter,
CultureInfo culture)
{
decimal? d = (decimal?)value;
if (d.HasValue)
return d.Value.ToString(culture);
else
return String.Empty;
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
string s = (string)value;
if (String.IsNullOrEmpty(s))
return null;
else
return (decimal?)decimal.Parse(s, culture);
}
}
Khai báo một phiên bản của bộ chuyển đổi này trong ressources:
<Window.Resources>
<local:StringToNullableDecimalConverter x:Key="nullDecimalConv"/>
</Window.Resources>
Và sử dụng nó trong ràng buộc của bạn:
<TextBox Text="{Binding Price, Converter={StaticResource nullDecimalConv}}"/>
Lưu ý rằng điều đó TargetNullValue
không phù hợp ở đây: nó được sử dụng để xác định giá trị nào sẽ được sử dụng khi giá trị source
của ràng buộc là null. Đây Price
không phải là nguồn, đó là thuộc tính của nguồn ...