2012-06-21 5 views
0

J'ai une propriété int dans mon viewmodel qui renvoie une propriété de classe personnalisée. Je vérifie si la référence de la classe est nulle, et dans ce cas, je veux retourner une valeur vide à la vue afin de ne montrer aucune valeur.WPF Propriété return int null

Le code est comme ceci:

public int percentage 
{ 
get { 
    if (customClass != null) 
    { 
     return customClass.getInt(); 
    } 
    else 
    { 
     return 0; 
    } 
... 
} 

Répondre

4

Si vous voulez retourner un « aucune valeur » résultat, vous devez retourner null. Puisque ce n'est pas une valeur valide pour un int, vous devez changer le type de la propriété d'être int? place:

public int? Percentage 
{ 
    get { return customClass == null ? null : customClass.getInt(); } 
} 

Si vous ne l'avez pas vu la syntaxe avant, int? est un raccourci pour System.Nullable<int>.

N'oubliez pas que vous pouvez également transformer la valeur de Percentage en quelque chose que vous aimez vraiment à l'intérieur de la vue en définissant un Converter approprié pour la liaison.

+0

Merci pour la réponse. J'ai entendu parler de nullable mais je ne l'ai jamais utilisé. Juste une question, maintenant dans mon setter comment devrais-je convertir l'int? à int? Juste parce que je ne veux pas changer mon type de classe. – Louro

+0

@Louro: Cela dépend de ce que signifie «null» dans ce cas, et même si cela a du sens, compte tenu de votre logique métier. Par exemple, que fait 'customClass'? Qu'est-ce que 'getInt()' est supposé modéliser? Qu'est-ce que cela signifie que 'customClass == null'? – Jon

+0

Ma customClass est initialisée avec null et ensuite assignée avec le retour d'un appel de service. Lorsque l'appel de service a une erreur, la classe customClass est null. Dans ce cas, je veux que la vue ne montre aucune valeur. – Louro

1

int est un type de valeur, donc ne peut pas être nul. Au lieu de cela, vous pouvez retourner int? (qui est un raccourci pour Nullable<int>) qui peut être nul, ou vous pouvez désigner une valeur spécifique int comme 0 comme approprié pour quand customClass == null. Cela dépend bien sûr de vos besoins.

public int? Percentage { 
    get { 
     if (customClass != null) 
      return customClass.getInt(); 
     else 
      return null; 
    } 
} 

Tout ce qui appelle Percentage devra vérifier Percentage.HasValue pour voir si elle est nulle ou non, et utiliser Percentage.Value pour extraire l'entier réel, qui fonctionnera si Percentage.HasValue est true.