问题描述
我想根据选中的不同组中的哪个单选按钮来显示/隐藏单选按钮上的工具提示。我尝试了 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_Checked
和 OtherRadioButton_Checked
的 cs 文件中的方法让它按照我想要的方式运行,并根据 RadioButton 设置 InputRowsToolTip.Visibility = Visibility.Visible
或 Visibility.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