2010-11-22 16 views
1

Je suis novice en langage de programmation C#. Mon problème est d'écrire une méthode qui utilise l'attribut "item.Visibility" et vérifie la visibilité. Le code pseudo de celui-ci:Type de visibilité du système en C#

 

private void MenuItem_Check(MenuItem item){ 
    if ((item.Visibility.ToString()=="Hidden") ||(item.Visibility.ToString()=="Collapsed")) 
    item.Visibility=Visibility.Visible; 
} 

 

Mes meilleures salutations et merci à l'avance.

+0

@ Martin Liversage: Désolé pour le mauvais code et merci correction. – scratmiller

Répondre

8

Vous ne se soucient pas vraiment si oui ou non l'élément est masqué ou effondré - vous êtes simplement intéressé à vérifier que ce n'est pas déjà visible avant que vous le rende visible. Donc, vérifier que:

private void MenuItem_Check(MenuItem item){ 
    // if item is not already visible, make it visible 
    if (item.Visibility != Visibility.Visible) 
     item.Visibility=Visibility.Visible; 
} 

Ceci a l'avantage supplémentaire de permettre votre code de continuer à travailler lorsque la constante Visibility.OnlyWithXRayGoggles est ajouté à la Visibility enumeration dans .NET 6.0.

(Comme les autres réponses ont déjà souligné, il n'y a aucune raison de convertir la valeur en une chaîne - vous pouvez comparer directement avec l'énumération se constantes)

+0

Continuez, supprimez l'instruction if(). –

+1

@Hans: Pas très familier avec WPF - Y at-il une pénalité pour définir cette propriété sans la modifier? (cela déclenche-t-il des événements, force-t-il le recalcul, ou est-il assez intelligent pour remarquer que rien n'a réellement changé) – Shog9

3

Pas besoin de ToString() .. Visibility est une énumération ...

private void MenuItem_Check(MenuItem item){ 
    if (item.Visibility == Visiblity.Hidden || item.Visibility == Visiblity.Collapsed) 
     item.Visibility=Visibility.Visible; 
} 
0
private void MenuItem_Check(MenuItem item) 
{ 
    if ((item.Visibility == Visibility.Hidden) || 
     (item.Visibility == Visibility.Collapsed)) 
    { 
     item.Visibility = Visibility.Visible; 
    } 
}