WPF 工具提示可见性绑定到 RadioButton 已检查

问题描述

我想根据选中的不同组中的哪个单选按钮来显示/隐藏单选按钮上的工具提示。我尝试了 BooleanToVisibilityConverter,它适用于其他控件,但不适用于工具提示

<Page.Resources>
    <BooleanToVisibilityConverter x:Key="b2v" />
</Page.Resources>

用于确定工具提示是否可见的单选按钮。 ToolTip 应在选中“InputText”时可见。

<RadioButton x:Name="InputText" Content="InputText" IsChecked="True" />
<RadioButton x:Name="Other" Content="Other" />

带有工具提示的单选按钮

<RadioButton x:Name="InputRows" Content="Rows">
    <RadioButton.ToolTip>
        <ToolTip x:Name="InputRowsToolTip"
                 Visibility="{Binding IsChecked,ElementName=InputText,Converter={StaticResource b2v}}">
            ToolTip text here
        </ToolTip>
    </RadioButton.ToolTip>
</RadioButton>

我尝试过的其他无效方法

  • 将工具提示文本包裹在 <TextBlock> 中,并在其中包含 Visibility 参数 - 无效。

  • 使用 <TextBlock> 而不是 <ToolTip> 并在其中包含 Visibility 参数 - 无效。

  • 向工具提示和单选按钮添加 ToolTipService.ShowOndisabled="False"ToolTipService.IsEnabled="False" - 工具提示根本不显示

我可以使用 InputTexTradioButton_CheckedOtherRadioButton_Checked 的 cs 文件中的方法让它按照我想要的方式运行,并根据 RadioButton 设置 InputRowsToolTip.Visibility = Visibility.VisibleVisibility.Collapsed,但是似乎我应该能够使用 BooleanToVisibilityConverter 来做到这一点,因为它适用于其他控件。

解决方法

我刚刚在 InputRows 中添加了 DataContext

DataContext="{Binding ElementName=InputText"

还有你的代码。

<RadioButton x:Name="InputText" Content="InputText" IsChecked="True" />
<RadioButton x:Name="Other" Content="Other" />

<RadioButton x:Name="InputRows" Content="Rows" DataContext="{Binding ElementName=InputText}">
    <RadioButton.ToolTip>
        <ToolTip x:Name="InputRowsToolTip"
                 Visibility="{Binding RelativeSource={RelativeSource Self},Path=DataContext.IsChecked,Converter={StaticResource b2v}}">
            ToolTip text here
        </ToolTip>
    </RadioButton.ToolTip>
</RadioButton>

单选按钮tooltip区域里面的控件,直接找不到外面的控件。这就是为什么我认为最好通过 DataContext 这个强大的依赖属性来处理它。

您不能使用下面的表格。

  • ElementName
  • RelativeSource AncestorType
  • Relative Source TemplateParent

这个示例源代码 https://github.com/ncoresoftsource/stackoverflowsample/tree/main/src/answers/radiobutton-tooltip-other-binding

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...