Общие сведения о всплывающих подсказках

Всплывающая подсказка — это небольшое всплывающее окно, которое появляется, когда пользователь задерживает указатель мыши над каким-либо элементом, например, над элементом управления Button. В этом разделе рассказывается о всплывающих подсказках и о том, как создавать и настраивать их содержимое.

Что такое всплывающая подсказка?

Когда пользователь наводит указатель мыши на элемент, для которого имеется всплывающая подсказка, окно с содержимым этой подсказки (например, текстом, описывающим функции этого элемента управления) отображается в течение заданного периода времени. Когда пользователь перемещает указатель мыши за пределы элемента управления, это окно исчезает, так как теперь фокус не направлен на содержимое подсказки.

Содержимым подсказки может быть одна или несколько строк текста, изображения, фигуры или другие видимые элементы. Чтобы задать всплывающую подсказку для элемента управления, нужно задать одно из следующих свойств содержимого этой всплывающей подсказки.

Используемое свойство зависит от того, наследуется ли элемент управления, в котором определена всплывающая подсказка, от класса FrameworkContentElement или FrameworkElement.

Создание всплывающей подсказки

В следующем примере показано, как создать простую подсказку, установив текстовую строку в качестве значения свойства ToolTip для элемента управления Button.

<Button ToolTip="Click to submit your information" 
        Click="SubmitCode" Height="20" Width="50">Submit</Button>

Также можно определить всплывающую подсказку в качестве объекта ToolTip. В следующем примере используется XAML, чтобы указать объект ToolTip в качестве всплывающей подсказки элемента TextBox. Обратите внимание, что в примере задается ToolTipпутем установки свойства FrameworkElement.ToolTip.

<TextBox HorizontalAlignment="Left">ToolTip with non-text content
  <TextBox.ToolTip>
    <ToolTip>
      <DockPanel Width="50" Height="70">
        <Image Source="data\flower.jpg"/>
        <TextBlock>Useful information goes here.</TextBlock>
      </DockPanel>
    </ToolTip>
  </TextBox.ToolTip>
</TextBox>

В следующем примере используется код для создания объекта ToolTip. В примере создается объект ToolTip (tt) и связывается с Button.

button = new Button();
button.Content = "Hover over me.";
tt = new ToolTip();
tt.Content = "Created with C#";
button.ToolTip = tt;
cv2.Children.Add(button);
button = New Button()
button.Content = "Hover over me."
tt = New ToolTip()
tt.Content = "Created with Visual Basic"
button.ToolTip = tt
cv2.Children.Add(button)

Можно также создать содержимое подсказки, которое не определено как объект ToolTip, включив содержимое подсказки в макет элемента, например, DockPanel. В следующем примере показано, как задать содержимое, которое включено в элемент управления DockPanel, в качестве значения свойства ToolTip элемента управления TextBox.

<TextBox>
  ToolTip with image and text
  <TextBox.ToolTip>
       <StackPanel>
        <Image Source="data\flower.jpg"/>
        <TextBlock>Useful information goes here.</TextBlock>
      </StackPanel>
  </TextBox.ToolTip>

Использование свойств классов ToolTip и ToolTipService

Содержимое всплывающей подсказки можно настроить, задавая его визуальные свойства и применяя стили. Если определить содержимое всплывающей подсказки как объект ToolTip, вы можете задать визуальные свойства объекта ToolTip. В противном случае необходимо задать эквивалентные присоединенные свойства класса ToolTipService.

Пример последовательной установки свойств для указания положения содержимого всплывающей подсказки с помощью свойств ToolTip и ToolTipService см. в разделе Задание положения всплывающей подсказки.

Задание стиля всплывающей подсказки

Вы можете задать стиль ToolTip, определив пользовательский атрибут Style. В следующем примере определяется Style, вызывающий Simple, который показывает, как задать смещение ToolTip и изменить его внешний вид, установив параметры Background, Foreground, FontSize и FontWeight.

<Style TargetType="ToolTip">
  <Setter Property = "HorizontalOffset" Value="10"/>
  <Setter Property = "VerticalOffset" Value="10"/>
  <Setter Property = "Background" Value="LightBlue"/>
  <Setter Property = "Foreground" Value="Purple"/>
  <Setter Property = "FontSize" Value="14"/>
  <Setter Property = "FontWeight" Value="Bold"/>
</Style>

Использование свойств интервала времени элемента ToolTipService

Класс ToolTipService предоставляет следующие свойства, позволяющие задать время отображения всплывающей подсказки: InitialShowDelay, BetweenShowDelay и ShowDuration.

Используйте свойства InitialShowDelay и ShowDuration, чтобы указать задержку, обычно короткую, перед появлением ToolTip, а также продолжительность отображения ToolTip. Подробнее см. в разделе Практическое руководство. Задержка отображения всплывающей подсказки.

Свойство BetweenShowDelay определяет, должны ли всплывающие подсказки для разных элементов управления отображаться без начальной задержки при быстром перемещении указателя мыши между ними. Дополнительные сведения о свойстве BetweenShowDelay см. в разделе Использование свойства BetweenShowDelay.

В примере ниже показано, как задать эти свойства для всплывающих подсказок.

<Ellipse Height="25" Width="50" 
         Fill="Gray" 
         HorizontalAlignment="Left"
         ToolTipService.InitialShowDelay="1000"
         ToolTipService.ShowDuration="7000"
         ToolTipService.BetweenShowDelay="2000">
  <Ellipse.ToolTip>
    <ToolTip Placement="Right" 
             PlacementRectangle="50,0,0,0"
             HorizontalOffset="10" 
             VerticalOffset="20"
             HasDropShadow="false"
             Opened="whenToolTipOpens"
             Closed="whenToolTipCloses"
             >
      <BulletDecorator>
        <BulletDecorator.Bullet>
          <Ellipse Height="10" Width="20" Fill="Blue"/>
        </BulletDecorator.Bullet>
        <TextBlock>Uses the ToolTip Class</TextBlock>
      </BulletDecorator>
    </ToolTip>
  </Ellipse.ToolTip>
</Ellipse>

См. также