請看看下面的行設定值在WPF空結合
<TextBox Text="{Binding Price}"/>
從上面這個價格屬性是Decimal?
(可空十進制)。
我想,如果用戶刪除文本框的內容(即進入空字符串,它應該automatcally更新空(在VB中爲Nothing)。
我如何能做到這一點「Xamly」任何想法來源?
請看看下面的行設定值在WPF空結合
<TextBox Text="{Binding Price}"/>
從上面這個價格屬性是Decimal?
(可空十進制)。
我想,如果用戶刪除文本框的內容(即進入空字符串,它應該automatcally更新空(在VB中爲Nothing)。
我如何能做到這一點「Xamly」任何想法來源?
我使用.NET 3.5 SP1所以這是非常簡單的:
<TextBox Text="{Binding Price, TargetNullValue=''}"/>
它代表(感謝格里的評論):
<TextBox Text="{Binding Price, TargetNullValue={x:Static sys:String.Empty}}"/>
sys
是mscorlib
爲System
導入XML命名空間:
xmlns:sys="clr-namespace:System;assembly=mscorlib"
希望有所幫助。
您可以嘗試使用ValueConverter(的IValueConverter) http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx
我的後腦勺這裏,是這樣的:
public class DoubleConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
return (double)value;
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
var doubleValue = Convert.ToDouble(value);
return (doubleValue == 0 ? null : doubleValue);
}
}
(可能需要儘管一些調整)
我更喜歡Xamly的方式,但我想不出任何 – Shimmy 2009-12-13 03:29:17
此值轉換器應該做的伎倆:
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);
}
}
聲明該轉換器的實例在ressources:
<Window.Resources>
<local:StringToNullableDecimalConverter x:Key="nullDecimalConv"/>
</Window.Resources>
而且在使用它你綁定:
<TextBox Text="{Binding Price, Converter={StaticResource nullDecimalConv}}"/>
請注意,TargetNullValue
在此不適用:它用於定義在綁定的source
爲空時應使用哪個值。這裏Price
沒有來源,它的來源的財產......
查看我的更新回答 – 2009-12-13 14:55:36
其實TargetNullValue工作得很好。它所做的是在給定值和null之間設置等價。因此,在這種情況下,當綁定值爲空時,它將顯示一個空字符串,並且當目標的值爲空字符串時,它會將綁定值設置爲空。 – 2009-12-13 16:19:41
TargetNullValue有效。使用數值轉換器時我得到了相同的結果。您還可以簡化表達式: –
2011-05-10 08:24:18