WPF ToolTip 可见性绑定到 RadioButton 检查
WPF ToolTip Visibility Binding to RadioButton Checked
我想 show/hide 单选按钮的工具提示基于选中不同组中的哪个单选按钮。我尝试了 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>
中并在其中包含可见性参数 - 无效。
使用 <TextBlock>
而不是 <ToolTip>
并在此处包含可见性参数 - 无效。
将 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 这种强大的 Dependency 来处理它更好 属性.
您不能使用下面的表格。
ElementName
RelativeSource AncestorType
Relative Source TemplateParent
我想 show/hide 单选按钮的工具提示基于选中不同组中的哪个单选按钮。我尝试了 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>
中并在其中包含可见性参数 - 无效。使用
<TextBlock>
而不是<ToolTip>
并在此处包含可见性参数 - 无效。将
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 这种强大的 Dependency 来处理它更好 属性.
您不能使用下面的表格。
ElementName
RelativeSource AncestorType
Relative Source TemplateParent