web-dev-qa-db-fra.com

Pourquoi les applications n'expliquent-elles pas la raison des icônes / options de menu grisées?

Duplicata possible:
Ne pas masquer ou désactiver les éléments de menu?

Je pense que les applications devraient expliquer pourquoi une option d'icône cliquable est grisée, c'est-à-dire non sélectionnable ou non active. Par exemple, un point d'interrogation à côté de lui disant "Pourquoi?!" Sinon, l'utilisateur se laisse deviner.

Voici un exemple de scénario qui pourrait faire avec une telle explication: https://productforums.google.com/forum/?fromgroups=#!topic/gmail/jXEgc1rRJxE

Cela n'est-il pas encore arrivé aux concepteurs d'interface utilisateur? Si oui, pourquoi pas?

3
therobyouknow

C'est généralement dû à la séparation de la présentation et de la logique. Particulièrement dans le monde MVVM. C'est certainement faisable cependant.

Prenons un exemple MVVM simple (supposons C # et WPF ici, mais cela devrait être à usage général)

Dans mon application, j'ai un bouton Coller, qui est lié à un PasteCommand dans mon modèle de vue. PasteCommand a un gestionnaire CanExecute qui renvoie false s'il n'y a pas de données dans le presse-papiers ou si les données dans le presse-papiers sont dans un format qu'il ne peut pas utiliser.

Maintenant, tout votre gestionnaire CanExecute peut retourner est un boolean. Il n'y a aucun moyen de dire pourquoi dans cette méthode.

Étant donné que votre commande ne sait rien de la vue, elle ne peut pas simplement aller de l'avant et définir le texte de l'info-bulle du bouton sur quelque chose d'utile. Ce texte d'info-bulle doit être lié à une propriété dans le modèle de vue.

Soudain, tout cela cesse de fonctionner, car cela signifie que vous avez besoin d'une propriété dans votre modèle de vue pour chaque contrôle dont vous souhaitez afficher la raison pour laquelle il est désactivé. Désordonné et impossible à maintenir.

Maintenant, il existe des moyens de contourner cela, si vous aviez une classe qui a hérité de ICommand qui avait une propriété FailureReason et qui l'a utilisée pour votre PasteCommand - vous pouvez alors lier le texte de l'info-bulle du contrôle désactivé à cette valeur (mais ne le faites que lorsqu'il est désactivé, ce que vous pouvez faire avec WPF) - bien que techniquement cela casse certaines règles de conception car la vue devient alors dépendante de votre implémentation du modèle de vue et de la classe de commande personnalisée.

1
PhonicUK

Le fait de griser les éléments de menu non disponibles remonte au moins aux années 1980 Apple Interface Mac.

C'est une convention, de la même manière qu'un X est utilisé pour fermer Windows. Et les interfaces ont souvent besoin d'un peu d '"instruction" pour apprendre ces conventions.

0
PhillipW