2010-02-19 3 views
2

I ont une WPF TextBox, avec la propriété Text lié à une valeur d'int (non annulable). Lorsque le formulaire est chargé, la zone de texte contient un 0. Est-il possible de rendre cette zone de texte vide par défaut? Je mettais la valeur à null dans le code derrière lorsque le formulaire se charge, mais il semble que par endroits, ce soit jeter des erreurs qui me sont cachées, car null ne peut pas entrer dans la valeur int .. Est-ce mauvaise pratique? J'ai beaucoup de ces situations, DateTime étant défini, et quand l'écran se charge, la date est 1/1/0001, ce qui est moche à un utilisateur. Je peux par défaut la date à la date d'aujourd'hui, mais dans certains cas, comme la date de naissance, cela n'a pas de sens.WPF Non Nullable Databinding par défaut une TextBox effacée?

Répondre

1

Vous pouvez utiliser un convertisseur de valeur (voir IValueConverter), ou exposer le int comme string de votre modèle de vue:

public string Value 
{ 
    get 
    { 
     if (intValue == 0) 
     { 
      return string.Empty; 
     } 

     return intValue.ToString(); 
    } 
    set 
    { 
     // do conversion here 
    } 
} 
2

Vous devriez faire votre Binding à sens unique, en utilisant BindingMode=OneWayToSource. Voir MSDN pour plus de détails.