0

2 つの重なり合うボタンとポップアップで構成されるカスタム分割ボタンを構築しています - このように (画像はいくつかの一般的な分割ボタンを示しています):

SplitButton http://windowsclient.net/wf/blogs/jfoscoding/splitbutton.PNG

私のSplitButtonは、矢印のある右側がクリックされるとポップアップを開き、メインボタンがクリックされるとSplitButton.Commandを実行します。

ただし、私の場合、デフォルトのアクションが実行できない場合があり、その場合、メインボタンがクリックされたときに、代わりにポップアップを開きたいと思います。

私はそれを達成しましたが、問題はこれです:

  • SplitButton は ToggleButton からサブクラス化されます
  • ControlTemplate には、ToggleButton (一番下) と Button (短く、一番上にオーバーレイ) があります。
  • Button.Command="{TemplateBinding Command}"(私ができるように<SplitButton Command="{Binding MyDefaultAction}">...
  • 問題: コマンドが実行できない場合、SplitButton 全体が無効になります。

同じコマンドを使い続けたいのですが、ボタンの動作をオーバーライドして、Command.CanExecute() が false を返したときにボタンが無効にならないようにします。これどうやってするの?

ありがとうございました!

4

1 に答える 1

0

Command は依存関係プロパティであり、ビジュアル ツリー内のその下にあるすべてのコントロールに継承されると確信しています。したがって、無効にしたくないボタンについては、command プロパティを別のコマンドに設定するか、null に設定することもできます。

あるいは、

独自の依存関係プロパティを作成します...このように

依存関係プロパティ

于 2009-11-30T00:58:35.613 に答える