wpf:当按钮被命令禁用时如何显示工具提示?

p5fdfcr1  于 2023-10-22  发布在  其他
关注(0)|答案(4)|浏览(173)

我试图显示一个工具提示,而不管按钮的状态,但这似乎没有做到这一点:

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

我怎么能显示工具提示时,按钮被禁用,由于命令。CanExecute返回假?

注:

ToolTipService.ShowOnDisabled=“true”就像一种魅力。在我的示例中,这不起作用的原因是,与按钮相关联的样式重新定义了控件模板,并在按钮被禁用时关闭了按钮上的点击测试(IsHitTestVisible=false)。在控件模板中重新启用点击测试会使工具提示在按钮被禁用时出现。

von4xj4u

von4xj4u1#

你可以直接在xaml元素上使用:

<Grid ToolTipService.ShowOnDisabled="True" ... >
zed5wv10

zed5wv102#

这是一个很好的方法来添加到您的启动代码:

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

它确保了对于任何从FrameworkElement继承的类,即使控件示例被禁用,也会显示工具提示。这涵盖了可以具有工具提示的所有元素。

j91ykkif

j91ykkif3#

使工具提示对所有禁用的工具栏和复选框可见:

<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=..部分。

ef1yzkbh

ef1yzkbh4#

如果有人想在代码后面编程的话。它适用于任何元素,而不仅仅是Button

Button button = new Button()
{
    Content = "Hello world",
    ToolTip = "You can show tooltip even when the button is disabled",
    IsEnabled = false
};

ToolTipService.SetShowOnDisabled(button, true);

相关问题