I have created my own control.
It is a container with a two labels. The container has 4 dynamic properties to hold a tag name, value, format and alert status.
The first label displays the tags tootip.
The second label displays the formatted value (in red if in alarm). It also displays any overlay. This is done by binding the label status to the tag status.
Other then the tag name which is entered via plain text, all bindings are indirect with the path coming from dynamic properties on the root container.
The problem is the overlay does not always show up when the window is opened. There seems to be a race condition when the window is opened that allows the components to be drawn before all values are derived/calculated.