web-dev-qa-db-ja.com

アプリケーションがアイコン/メニューオプションがグレー表示されている理由を説明しないのはなぜですか?

可能性のある複製:
メニュー項目を非表示または無効にしないでください?

アプリケーションでは、クリック可能なアイコンのオプションがグレー表示される理由、つまり選択できない、またはアクティブでない理由を説明する必要があると思います。たとえば、「なぜ?!」という横にある疑問符それ以外の場合、ユーザーは推測されたままになります。

このような説明で可能なシナリオの例を次に示します。 https://productforums.google.com/forum/?fromgroups=#!topic/gmail/jXEgc1rRJxE

これは、今までにユーザーインターフェイスデザイナーには発生していませんか?もしそうなら、なぜでしょうか?

3
therobyouknow

これは通常、プレゼンテーションとロジックの分離によるものです。特にMVVMの世界では。それは確かに実行可能です。

簡単なMVVMの例を見てみましょう(ここではC#とWPFを想定していますが、これは汎用的なものです)

私のアプリケーションには、ビューモデルのPasteCommandにバインドされている[貼り付け]ボタンがあります。 PasteCommandにはCanExecuteハンドラーがあり、クリップボードにデータがないか、クリップボードのデータが使用できない形式の場合にfalseを返します。

これで、CanExecuteハンドラーが返すことができるのはbooleanだけです。その方法でなぜそれを言うのは仕方がない。

コマンドはビューについて何も認識していないため、先に進んでボタンのツールチップテキストをわかりやすいものに設定することはできません。そのツールチップテキストは、ビューモデルのプロパティにバインドする必要があります。

無効になっている理由を表示したいすべてのコントロールのビューモデルにプロパティが必要であることを意味するため、これはすべて突然機能を停止します。乱雑で維持できない。

これを回避する方法があります。ICommandプロパティを持つFailureReasonから継承し、それをPasteCommandに使用した場合、ツールチップテキストをバインドできます無効にされたコントロールのその値への変更(ただし、無効にされている場合にのみ、WPFを使用して実行できます)-技術的には、ビューモデルとカスタムコマンドクラスの実装に依存するようになるため、これは一部の設計規則に違反します。

1
PhonicUK

使用できないメニュー項目をグレー表示すると、少なくとも1980年代に戻りますApple Macインターフェイス。

Xを使用してWindowsを閉じるのと同じように、これは規則です。そして、これらの慣習を学ぶために、インターフェースはしばしば「指示」を少し必要とします。

0
PhillipW