1

Introduction

For a project I am working on I had to create a ContentControl which must display a ToolTip/Popup when some provided content is not allowed. For example: A TextBox is wrapped inside my ContentControl, the ContentControl provides the logic of displaying a ToolTip when unwanted characters are being typed in the TextBox. A ToolTip would appear displaying the unwanted characters and after x-period of time, the ToolTip would dissapear.

However using the ToolTip approach led to unexpected and unwanted behavior;

  • on mouse over an empty tooltip is shown (we could get this to close immediately, but it was still visible for a moment)
  • when the mouse left the control, the tooltip was hidden
  • the slide effect could not be controlled precise enough, so depending on the location of the tooltip (above or below) the effect was correct or not.

Therefore I need to have another solution which does not rely on the ToolTip.

Example code

The Xaml structure is like

<ContentControl x:Class="xxx.yyy.zzz.UserControls.MyContentControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    ... more namespaces ...>
<ContentControl.Template>
  <ControlTemplate TargetType="ContentControl">
    <ContentPresenter Content="{TemplateBinding Content}">
      <ContentPresenter.ToolTip>
       ...

And it's usage is like:

<UserControl:Class="xxx.yyy.UserControls.TextBoxControl"
   xmlns:cn="clr-namespace:xxx.yyy.zzz.UserControls">

<cn:MyContentControl Info="{Binding ..}" x:Name="MyContentControlName">
  <TextBox Text="{Binding Text}" .."/>
</cn:MyContentControl>

Where Info is a dependency property used by my ContentControl's codebehind and for which the input binding is provided by the TextBoxControl's ViewModel.

On a side note: For our validations we rely on Validation Error Style in WPF, similar to Silverlight and an implementation of How can I move a WPF Popup when its anchor element moves?

I have tried to incorporate some of the template code from the first link mentioned and that resulted only in display a minuscule popup, not displaying anything and neither giving me the behavior I was expecting.

As can be seen in the code snippet, formerly I was using ContentPresenter.ToolTip, unfortunately there is no such thing a ContentPresenter.Popup, whereas I believe a ToolTip is a popup

The question

So how would it be possible to create popup like behavior especially for this piece of code? (this will represent the TextBox on the WPF UI)

<ContentPresenter Content="{TemplateBinding Content}">
Community
  • 1
  • 1
Dutchman078
  • 91
  • 1
  • 8

0 Answers0