2

テキスト フィールドのデータを含むヒントを表示する必要があります。テキストボックスにデータがある場合に表示するプロンプト。

4

4 に答える 4

6

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();
    }
}
于 2012-08-12T20:45:51.807 に答える
5

トリガーを使用してツールチップを無効にすることができます。このスタイルをウィンドウまたはアプリ リソースに配置して、選択に応じてウィンドウまたはアプリケーションのすべてのテキスト ボックスで共有できるようにします。

<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"
于 2012-08-13T06:08:32.557 に答える
2

私は自分でこの問題を抱えていて、別の解決策を見つけました。私はこの質問が回答されたことを知っていますが、私と同じように、この質問に出くわす人がまだいるので、私の解決策を共有したいと思います:

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

これが誰かに役立つことを願っています。

于 2014-06-18T19:56:12.070 に答える
0

Visibility Mode & TextChange イベントで試してみました。テキストがない場合、ツールチップは非表示になります。誰かに役立つかもしれません。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;
        }
    }
于 2013-04-19T04:37:00.007 に答える