2010-01-14 16 views
6

için bağlayıcı ayarlamıyor Null bir DB alanı null boş bir TextBox ayarlamada güçlük yaşıyorum.<a1> Text</ a1> temizleniyor null

XAML

<y:TextBox Text="{Binding Year1Cost, Mode=TwoWay, 
    UpdateSourceTrigger=PropertyChanged, 
    NotifyOnValidationError=True, 
    ValidatesOnDataErrors=True, 
    ValidatesOnExceptions=True, 
    StringFormat=\{0:c\}}" Grid.Row="3" Grid.Column="1" /> 

İçine herhangi bir değer girdiğinizde bağlayıcı ince ve ben değeri silerseniz yalnız boş
geçirilen boş değer ayrıldıklarında girilen değer
geçirilir geçti TextBox değeri metin kutusu orjinal değeridir ve ben seçenekleri arkasındaki kodu koyarak kısa şey kontrol uzun zaman geçirdim Grrrrrrrrrrrrrrrr

UI değişiklik bildirilir değil OnText Her bir nemli alanın değiştirilmesinden dolayı bunu yaparken verimliliği göremiyorum.

Şimdiden teşekkürler:

ps. SP1'i - - Net 3.5

cevap

3

bir value converter kullanmayı düşünün hiçbir başarının TargetNullValue de

Visual Studio 2008 baktınız mı. Boş dizeleri boş değerlere çevirmek için ConvertBack yöntemini uygulayabilmeniz gerekir.

+0

nedense mülkiyet değiştirilen olayı tetiklemek vermedi boş bir dize gibi bir alana dönüştürmek zorunda kaldı bu. Yardımlarınız için teşekkürler, tüm gerekli yerlerde uygulayacağım. – Traci

14

Set mülkiyet String.Empty bağlanma TargetNullValue:

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

Ben denedim ve benim için çalışıyor.

Ve (ben beni affet) yanlış değilsem, böyle özellik StringFormat belirlesin:

StringFormat={}{0:C} 

Bu Elindeki istisna bile muhtemelen nedenidir.

+0

xmlns: sys = "clr-namespace: Sistem; assembly = mscorlib" Bunu denedim, ancak almaya devam edin Error 24 'Microsoft.Windows.Design.Metadata.ProvideMetadataAttribute' derleme 'Microsoft.Windows.Design.Extensibility' türünden yüklenemedi, Sürüm = 3.5.0.0, Kültür = tarafsız, PublicKeyToken = b03f5f7f11d50a3a '. '1' Pozisyon '6680'. – Traci

+0

Ben donmadım. Ama eğer sen olsaydım, başka bir tanım olmadan bir TextBox'a sahip olmak için bir test yapmayı denerdim; sadece bağlama ve TargetNullValue. Bu yol istisnanın kaynağını bulmanıza yardımcı olabilir. – Shimmy

+0

StringFormat'ı birlikte kaldırmaya çalıştım ve hala aynı ölçüleri alıyorum. --- ---- Bu benim bütün sahip olduğum ve hala yukarıdaki istisnayı alacağım – Traci

3

Benim için sadece dönüştürücü çalışır: İşte a link

public class NullableConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return value == null ? string.Empty : String.Format(culture, "{0}", value); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return string.IsNullOrEmpty(String.Format(culture, "{0}", value)) ? null : value; 
    } 
} 
İlgili konular