2012-08-12 47 views

回答

4

只需使用綁定到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}}"/> 

轉換器:

internal sealed class IsStringNonemptyConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return !String.IsNullOrEmpty(value as string); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 
3

您可以使用觸發器禁用的工具提示。將這種風格在你的窗口或應用程序的資源,以便它可以在這取決於你的選擇在你的窗口或應用程序的所有文本框共享 -

<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 -

xmlns:sys="clr-namespace:System;assembly=mscorlib" 
0

我試着用可見性模式& TextChange事件。當沒有文本時,ToolTip不可見。可能對別人有用。 的XAML:

<TextBox Height="23" Width="100" Name="myTextBox" TextChanged="myTextBox_TextChanged" > 
     <TextBox.ToolTip> 
      <ToolTip Visibility="Hidden"> 
       <TextBlock Name="toolTipTextBlock"></TextBlock> 
      </ToolTip>    
     </TextBox.ToolTip> 
    </TextBox> 

TextChange事件處理程序:

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

我有這個問題我自己想通了不同的解決方案。我知道這個問題已經回答了,但就像我仍然會有人碰到這個問題來了,我想和大家分享我的解決方案:背後

XAML

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

我希望這有助於某人。