0

比較ダイアログを設計しています (いくつかのウィジェットとその特性をグリッドで表示します)。使用可能なすべての機能がそれぞれのチェック ボックスとともに一覧表示される機能セクションがあります。部品にその機能がある場合、チェックボックスがチェックされます。これらのチェックボックスは読み取り専用にする必要があるため、isEnabled=false に設定しました。ただし、視覚的にはチェックボックス (およびラベルの内容) がグレー表示されます。

ここにいくつかの重要な点があります:

  • チェックボックスは、パーツにフィーチャーがあるかどうかを視覚的に示すインジケーターです。相互作用の要件はありません。
  • 要件はチェックボックスです。別の何かを使用する権限を説得する必要があります。

私が欲しいのは、チェックボックス(およびそのコンテンツ)をスタイル/コントロールテンプレートにして、有効に見えますが、ユーザー入力に反応しない簡単な方法です。

4

3 に答える 3

0

Microsoft は MSDN でいくつかの既定のスタイルを提供しており、チェックボックスの既定のスタイルはhttp://msdn.microsoft.com/en-us/library/ms752319(v=vs.85).aspxで確認できます。このスタイルをプロジェクトにコピーし、IsEnabled のトリガーを削除して、チェックボックスのスタイルをこの新しいスタイルに設定します。

余談ですが、再利用のためにスタイルを別の ResourceDictionary にコピーし、スタイルが xaml ファイルを混乱させないようにすることをお勧めします。

于 2013-04-02T14:34:42.740 に答える
0

上記の解決策は Windows フォームでうまく機能しますが、WPF とチェック マークが 1 秒間表示されることについて、あなたが何を意味するかはわかります。

代わりにこれを試してください:

namespace System.Windows.Controls
{
    public class UnchangingCheckbox : CheckBox
    {
        public UnchangingCheckbox()
        {
            this.IsReadOnly = true;
        }

        public bool IsReadOnly 
        {
            get { return !this.IsHitTestVisible && !this.Focusable; }
            set 
            { 
                this.IsHitTestVisible = !value; 
                this.Focusable = !value;             
            }
        }
    }
}

「IsReadOnly」と呼ばれるプロパティを取得します。これはデフォルトで true に設定されており、迷惑な「チェックマークが 1 秒間表示される」動作をせずに必要な動作をします。

于 2013-04-02T17:49:19.060 に答える