如何在输入WPF中的特定文本时显示组合框上的工具提示

时间:2014-08-08 09:33:02

标签: wpf vb.net xaml combobox

我想在组合框中输入特定文字时弹出/显示工具提示

 If cmbDatabase.Text.ToUpper = "TRAINING" Then

 Dim tool As New ToolTip()
  tool.Content = "Warning : You are about to log into a training database" &  

  cmbDatabase.tooltip = tool

  tool.IsOpen = True

end if

以上代码显示工具提示,但基本没有气球等

我有另一个用xaml设计的代码

但问题是,当输入特定文本时我无法显示

<Window.Resources>
      <Style x:Key="{x:Type ToolTip}" TargetType="ToolTip">
          <Setter Property="OverridesDefaultStyle" Value="true"/>
          <Setter Property="HasDropShadow" Value="True"/>
          <Setter Property="Template">
              <Setter.Value>
                  <ControlTemplate TargetType="ToolTip">
                      <Border CornerRadius="7" HorizontalAlignment="Center" VerticalAlignment="Top" Padding="5" BorderThickness="3,3,3,3" >
                          <Border.Background>
                              <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                  <GradientStop Color="#CF181818" Offset="0"/>
                                  <GradientStop Color="#BE1C1C1C" Offset="1"/>
                              </LinearGradientBrush>
                          </Border.Background>
                          <!--<Border.BorderBrush>
                              <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                  <GradientStop Color="#80FFFFFF" Offset="0"/>
                                  <GradientStop Color="#7FFFFFFF" Offset="1"/>
                                  <GradientStop Color="#FFFFF18D" Offset="0.344"/>
                                  <GradientStop Color="#FFFFF4AB" Offset="0.647"/>
                              </LinearGradientBrush>
                          </Border.BorderBrush>-->
                          <Grid>
                              <Grid.ColumnDefinitions>
                                  <ColumnDefinition Width="0.1*" />
                                  <ColumnDefinition Width="0.9*" />
                              </Grid.ColumnDefinitions>
                              <Grid.RowDefinitions>
                                  <RowDefinition Height="Auto"/>
                                  <RowDefinition Height="Auto"/>
                              </Grid.RowDefinitions>
                              <!--<Image Source="pack://application:,,,/resources/info_icon.jpg" Grid.Row="0" Grid.RowSpan="2" Grid.Column="0" Margin="3" />-->
                              <TextBlock FontFamily="Tahoma" Grid.Row="0" Grid.Column="1" FontSize="13" Text="{TemplateBinding Content}" Foreground="#5095D6" />
                              <TextBlock FontFamily="Tahoma" Grid.Row="1" Grid.Column="1" FontSize="11" Text="To expediate your process please click here" Foreground="#FFFFFFFF" />
                          </Grid>
                      </Border>
                  </ControlTemplate>
              </Setter.Value>
          </Setter>
      </Style>
  </Window.Resources>

以上代码显示了combobox mousehover上的工具提示

1 个答案:

答案 0 :(得分:0)

你可以尝试这样

  <Style TargetType="ComboBox">
            <Style.Triggers>
                <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Text}" Value="1">
                    <Setter Property="ToolTip" Value="You selected 1"/>
                </DataTrigger>

                <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Text}" Value="2">
                    <Setter Property="ToolTip" Value="U selected 2"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Grid.Resources>

    <StackPanel>
        <Label>Hi,</Label>

        <ComboBox>
            <ComboBoxItem>1</ComboBoxItem>
            <ComboBoxItem>2</ComboBoxItem>
            <ComboBoxItem>3</ComboBoxItem>
        </ComboBox>
    </StackPanel>