WPF隐藏样式中按钮的工具提示

WPF隐藏样式中按钮的工具提示,wpf,Wpf,我有一个通过模板定义的按钮: <Button Name="DialogOk" Grid.Column="0" Margin="4,0,0,0" Content="{Binding OkButtonText}" ToolTip="{Binding OkButtonShortcut}" Style="{DynamicResource ButtonOk}" Click="DialogOk_Click" Visibi

我有一个通过模板定义的
按钮

<Button Name="DialogOk" Grid.Column="0" Margin="4,0,0,0" Content="{Binding OkButtonText}" 
                    ToolTip="{Binding OkButtonShortcut}" Style="{DynamicResource ButtonOk}"
                    Click="DialogOk_Click" Visibility="{Binding DialogOkButtonVisibility}" />
按钮自定义工具提示
OkButtonShortcut
字符串为空时折叠

但我仍然看到默认的工具提示,就像一个空白的白色矩形
当光标位于我的按钮上时。如何删除此默认工具提示区域?

并找到了如何重新定义工具提示样式的解决方案:

<Button Name="BtnOk" Grid.Column="0" Margin="4,0,0,0" Content="{Binding OkButtonText}" 
                    ToolTip="{Binding OkButtonShortcut}" Style="{DynamicResource ButtonOk}"
                    Click="DialogOk_Click">
                <Button.Resources>
                    <Style TargetType="ToolTip" BasedOn="{StaticResource {x:Type ToolTip}}">
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="{x:Type ToolTip}">
                                    <Grid Visibility="Collapsed"></Grid>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style>
                </Button.Resources>
            </Button>

并找到了如何重新定义工具提示样式的解决方案:

<Button Name="BtnOk" Grid.Column="0" Margin="4,0,0,0" Content="{Binding OkButtonText}" 
                    ToolTip="{Binding OkButtonShortcut}" Style="{DynamicResource ButtonOk}"
                    Click="DialogOk_Click">
                <Button.Resources>
                    <Style TargetType="ToolTip" BasedOn="{StaticResource {x:Type ToolTip}}">
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="{x:Type ToolTip}">
                                    <Grid Visibility="Collapsed"></Grid>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style>
                </Button.Resources>
            </Button>

这可以通过父样式的参考资料部分中的样式来实现

<Grid>
    <Grid.Resources>
        <Style x:Key="ExampleButtonStyle" TargetType="{x:Type Button}">
            <Style.Resources>
                <Style TargetType="ToolTip">
                    <Style.Triggers>
                        <!-- Add triggers for values you want to hide. -->
                        <Trigger Property="Content" Value=" ">
                            <Setter Property="Visibility" Value="Collapsed" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </Style.Resources>
        </Style>
    </Grid.Resources>

    <StackPanel>
        <!-- Tooltip not hidden -->
        <Button Margin="10" Height="50" Width="100" Content="{Binding OkButtonText}" 
                Style="{DynamicResource ExampleButtonStyle}"
                Visibility="{Binding DialogOkButtonVisibility}"
                ToolTip="Hello">
        </Button>
        <!-- Tooltip hidden -->
        <Button Margin="10" Height="50" Width="100" Content="{Binding OkButtonText}" 
                Style="{DynamicResource ExampleButtonStyle}"
                Visibility="{Binding DialogOkButtonVisibility}"
                ToolTip=" ">
        </Button>
        <!-- Tooltip not hidden because trigger doesn't hide it. -->
        <Button Margin="10" Height="50" Width="100" Content="{Binding OkButtonText}" 
                Style="{DynamicResource ExampleButtonStyle}"
                Visibility="{Binding DialogOkButtonVisibility}"
                ToolTip="">
        </Button>
        <!-- Tooltip hidden -->
        <Button Margin="10" Height="50" Width="100" Content="{Binding OkButtonText}" 
                Style="{DynamicResource ExampleButtonStyle}"
                Visibility="{Binding DialogOkButtonVisibility}"
                ToolTip="{x:Null}">
        </Button>
    </StackPanel>
</Grid>

这可以通过父样式的参考资料部分中的样式来实现

<Grid>
    <Grid.Resources>
        <Style x:Key="ExampleButtonStyle" TargetType="{x:Type Button}">
            <Style.Resources>
                <Style TargetType="ToolTip">
                    <Style.Triggers>
                        <!-- Add triggers for values you want to hide. -->
                        <Trigger Property="Content" Value=" ">
                            <Setter Property="Visibility" Value="Collapsed" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </Style.Resources>
        </Style>
    </Grid.Resources>

    <StackPanel>
        <!-- Tooltip not hidden -->
        <Button Margin="10" Height="50" Width="100" Content="{Binding OkButtonText}" 
                Style="{DynamicResource ExampleButtonStyle}"
                Visibility="{Binding DialogOkButtonVisibility}"
                ToolTip="Hello">
        </Button>
        <!-- Tooltip hidden -->
        <Button Margin="10" Height="50" Width="100" Content="{Binding OkButtonText}" 
                Style="{DynamicResource ExampleButtonStyle}"
                Visibility="{Binding DialogOkButtonVisibility}"
                ToolTip=" ">
        </Button>
        <!-- Tooltip not hidden because trigger doesn't hide it. -->
        <Button Margin="10" Height="50" Width="100" Content="{Binding OkButtonText}" 
                Style="{DynamicResource ExampleButtonStyle}"
                Visibility="{Binding DialogOkButtonVisibility}"
                ToolTip="">
        </Button>
        <!-- Tooltip hidden -->
        <Button Margin="10" Height="50" Width="100" Content="{Binding OkButtonText}" 
                Style="{DynamicResource ExampleButtonStyle}"
                Visibility="{Binding DialogOkButtonVisibility}"
                ToolTip="{x:Null}">
        </Button>
    </StackPanel>
</Grid>


您正在折叠
文本块
而不是实际的
工具提示
。我知道。这就是为什么我要问如何折叠工具提示
ToolTip=“{x:Null}”
Good point,但是我需要以其他方式设置我的自定义tolltip,这是我不想做的。所以,让它成为备用方式。还有别的办法吗?有没有可能在某个地方设置工具提示样式,所以它被折叠了?如果你设置了一个触发器,仅当url为空时才将其设置为null,那么你仍然会有
工具提示
,只有当触发器设置它时它才会为空。你正在折叠
文本块
而不是实际的
工具提示
。我知道。这就是为什么我要问如何折叠工具提示
ToolTip=“{x:Null}”
Good point,但是我需要以其他方式设置我的自定义tolltip,这是我不想做的。所以,让它成为备用方式。还有别的办法吗?是否可以在某个地方设置工具提示样式,使其处于折叠状态?如果您设置了一个触发器,仅当url为空时才将其设置为null,则您仍将保留
工具提示,它仅在触发器设置时才为空。