wpf:ボタンがコマンドによって無効にされたときにツールチップを表示する方法?


162

ボタンの状態に関係なくツールチップを表示しようとしていますが、これではうまくいかないようです。

<Button Command="{Binding Path=CommandExecuteAction}" 
        ToolTip="{Binding Path=Description}" ToolTipService.ShowOnDisabled="true"
        Style="{StaticResource toolbarButton}">
   <Image Source="{Binding Path=Icon}"></Image>
</Button>

command.CanExecuteがfalseを返したためにボタンが無効になったときに、ツールチップを表示するにはどうすればよいですか?

注意:

ToolTipService.ShowOnDisabled = "true"は魅力のように機能します。これが私の例で機能しなかった理由は、ボタンに関連付けられたスタイルがコントロールテンプレートを再定義し、ボタンが無効になっている(IsHitTestVisible = false)ときにボタンのヒットテストをオフにしたためです。コントロールテンプレートでヒットテストを再度有効にすると、ボタンが無効になったときにツールチップが表示されました。


可能性のある重複したWPFツールチップ可視性
OJ。

ToolTipService.ShowOnDisabledを使用していますが、機能しません。
マリウス

1
この質問を削除してください。小さなテストプロジェクトを実行しましたが、ToolTipService.ShowOnDisabledは問題なく動作します。
マリウス

15
この質問が削除されなかったことをうれしく思います。それは私が持っていた質問/問題を迅速かつ正確に答えました、それが私が最初にSOに来る正確な理由です。Lazy(tm)Mariusになってくれてありがとう。:-)
Jere.Jones 2010

すみません、無効になっている場合にのみ表示できる方法はありますか?
advapi '13 / 11/19

回答:



26

これは、スタートアップコードに追加するのに適した方法です

ToolTipService.ShowOnDisabledProperty.OverrideMetadata(
    typeof(Control),
    new FrameworkPropertyMetadata(true));

これが何をするか説明できますか?起動時にそれが良い方法だと言っても説明はありません。
ステルスラビ

これにより、Controlを継承するすべてのクラスで、Controlインスタンスが無効になっている場合でもツールチップが表示されるようになります
sacha barber

3
ユーザーがコントロールが無効になっている理由を知りたいので、コントロールが無効になっているときにツールチップを最も必要としているのは皮肉なことです。これは、ほとんどの場合正しくないWPFのデフォルトの良い例です。したがって、変更する価値があります。
Contango、

2

無効になっているすべてのボタンとチェックボックスのツールチップを表示します。

<Window.Resources>
    <Style TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}>
        <Setter Property="ToolTipService.ShowOnDisabled" Value="true"/>
    </Style>
    <Style TargetType="{x:Type CheckBox}" BasedOn="{StaticResource {x:Type CheckBox}}>
        <Setter Property="ToolTipService.ShowOnDisabled" Value="true"/>
    </Style>
</Window.Resources>

これBasedOn=...により、以前にチェックボックスまたはボタンに適用されていた他のスタイルが失われるのを防ぎます。ボタンまたはチェックボックスに他のスタイルを使用しない場合は、BasedOn=..パーツを削除できます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.