C# 如果文本框不为空,如何添加和显示工具提示文本框WPF
需要显示一个提示,其中包含来自文本字段的数据。如果文本框包含数据,则提示显示。只需使用绑定到ToolTipService附加属性即可。XAML:C# 如果文本框不为空,如何添加和显示工具提示文本框WPF,c#,wpf,C#,Wpf,需要显示一个提示,其中包含来自文本字段的数据。如果文本框包含数据,则提示显示。只需使用绑定到ToolTipService附加属性即可。XAML: <UserControl.Resources> <converters:IsStringNonemptyConverter x:Key="ToolTipVisibilityConveter" /> </UserControl.Resources> <TextBox Name="textBox" Ver
<UserControl.Resources>
<converters:IsStringNonemptyConverter x:Key="ToolTipVisibilityConveter" />
</UserControl.Resources>
<TextBox Name="textBox" VerticalAlignment="Center" HorizontalAlignment="Center" Width="150"
ToolTipService.ToolTip="{Binding Text, RelativeSource={RelativeSource Self}}"
ToolTipService.IsEnabled="{Binding Text, RelativeSource={RelativeSource Self}, Converter={StaticResource ToolTipVisibilityConveter}}"/>
可以使用触发器禁用工具提示。将此样式放置在窗口或应用程序资源中,以便根据您的选择在窗口或应用程序中的所有文本框中共享-
<Style x:Key="{x:Type TextBox}" TargetType="TextBox">
<Style.Triggers>
<Trigger Property="ToolTip" Value="{x:Static sys:String.Empty}">
<Setter Property="ToolTipService.IsEnabled" Value="False" />
</Trigger>
</Style.Triggers>
我尝试了可见性模式和文本更改事件。没有文本时工具提示不可见。可能对其他人有用。 Xaml:
我自己也遇到了这个问题,并想出了一个不同的解决方案。我知道这个问题已经得到了回答,但和我一样,仍然会有人遇到这个问题,我想分享我的解决方案: XAML
<TextBox Name="textBox1" ToolTip="{Binding Text, RelativeSource={RelativeSource Self}}" ToolTipService.IsEnabled="False"/>
我希望这对某人有所帮助。这是最好的方法,应该是公认的答案。简短而简单。很抱歉,这对我不起作用,它给了我一个错误:
error无法在“Trigger”类型的“Value”属性上设置“Binding”。“绑定”只能在DependencyObject的DependencyProperty上设置。
xmlns:sys="clr-namespace:System;assembly=mscorlib"
<TextBox Height="23" Width="100" Name="myTextBox" TextChanged="myTextBox_TextChanged" >
<TextBox.ToolTip>
<ToolTip Visibility="Hidden">
<TextBlock Name="toolTipTextBlock"></TextBlock>
</ToolTip>
</TextBox.ToolTip>
</TextBox>
private void myTextBox_TextChanged(object sender, TextChangedEventArgs e)
{
TextBox tb = sender as TextBox;
if (tb.Text.Trim() == "")
{
((ToolTip)tb.ToolTip).Visibility = Visibility.Hidden;
}
else
{
toolTipTextBlock.Text = tb.Text;
((ToolTip)tb.ToolTip).Visibility = Visibility.Visible;
}
}
<TextBox Name="textBox1" ToolTip="{Binding Text, RelativeSource={RelativeSource Self}}" ToolTipService.IsEnabled="False"/>
private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
{
if (textBox1.Text.Length > 0)
{
ToolTipService.SetIsEnabled(textBox1, true);
}
}