Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果文本框不为空,如何添加和显示工具提示文本框WPF_C#_Wpf - Fatal编程技术网

C# 如果文本框不为空,如何添加和显示工具提示文本框WPF

C# 如果文本框不为空,如何添加和显示工具提示文本框WPF,c#,wpf,C#,Wpf,需要显示一个提示,其中包含来自文本字段的数据。如果文本框包含数据,则提示显示。只需使用绑定到ToolTipService附加属性即可。XAML: <UserControl.Resources> <converters:IsStringNonemptyConverter x:Key="ToolTipVisibilityConveter" /> </UserControl.Resources> <TextBox Name="textBox" Ver

需要显示一个提示,其中包含来自文本字段的数据。如果文本框包含数据,则提示显示。

只需使用绑定到ToolTipService附加属性即可。XAML:

<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);
    }
}