Nustatykite nulį WPF įrišime

pažvelkite į kitą eilutę

 <TextBox Text="{Binding Price}"/> 

Ar ši turto kaina yra didesnė nei Decimal? (Neteisingas dešimtainis skaičius).

Noriu, jei vartotojas ištrina teksto lauko turinį (t. Y. Įves tuščią eilutę, jis turėtų automatiškai atnaujinti šaltinį nuliu (Nieko VB).

Bet kokios idėjos apie tai, kaip galiu tai padaryti „Xamly“?

102
13 дек. Shimmy nustatytas gruodžio 13 d 2009-12-13 06:15 '09 6:15 am 2009-12-13 06:15
@ 3 atsakymai

Naudoju .NET 3.5 SP1, todėl labai paprasta:

 <TextBox Text="{Binding Price, TargetNullValue=''}"/> 

Tai reiškia (dėka Gregor už jūsų komentarą):

 <TextBox Text="{Binding Price, TargetNullValue={x:Static sys:String.Empty}}"/> 

sys yra importuota xml vardų System mscorlib :

 xmlns:sys="clr-namespace:System;assembly=mscorlib" 

Tikiuosi, kad tai padėjo.

197
13 дек. Atsakymą pateikė Shimmy gruodžio 13 d. 2009-12-13 06:40 '09 6:40 am 2009-12-13 06:40

Šis reikšmės konverteris turėtų padaryti tai:

 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); } } 

Pripažinkite šio konverterio kopiją į išteklius:

 <Window.Resources> <local:StringToNullableDecimalConverter x:Key="nullDecimalConv"/> </Window.Resources> 

Ir naudokite jį privaloma:

 <TextBox Text="{Binding Price, Converter={StaticResource nullDecimalConv}}"/> 

Atkreipkite dėmesį, kad „ TargetNullValue čia netinka: ji naudojama norint nustatyti, kokią vertę naudoti, kai source yra nulinis. Price nėra šaltinis, ši nuosavybė yra šaltinis ...

11
13 дек. Thomas Levesque atsakymas gruodžio 13 d 2009-12-13 06:28 '09, 06:28 2009-12-13 06:28

Galite pabandyti naudoti „ValueConverter“ (IValueConverter) http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx

Galvos galas yra čia, kažkas panašaus:

 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); } } 

(Jums gali prireikti tam tikros sąrankos)

5
13 дек. Atsakymą pateikė TimothyP 13 dec. 2009-12-13 06:20 '09, 06:20 am. 2009-12-13 06:20