<ControlTemplate x:Key="DefaultErrorTemplate">
<DockPanel LastChildFill="True">
<DKMS:WarningImage Margin="10,0,0,0"
DockPanel.Dock="Right"
Notification="{Binding ElementName=MyAdorner,
Path=AdornedElement.(Validation.Errors)[0].ErrorContent}" />
<AdornedElementPlaceholder Name="MyAdorner" />
</DockPanel>
</ControlTemplate>
And in text box style:
<Setter Property="Validation.ErrorTemplate" Value="{StaticResource DefaultErrorTemplate}" />

The question is how do I force the layout update that is triggered by mouse over? It is also triggered by a MessageBox.
If this is an ErrorTemplate, then you display it by telling the binding system that the binding is invalid. Typically this is done through the
IDataErrorInfointerface. But again, this assumes that you’re using some sort of binding on theTextBox, typically theTextproperty.Here’s a blog post about the topic: http://weblogs.asp.net/marianor/archive/2009/04/17/wpf-validation-with-attributes-and-idataerrorinfo-interface-in-mvvm.aspx
It sounds, though, like you are using “event based” programming, and so I don’t think you want to use
Validation.ErrorTemplate, it sounds like you really want to do some custom adorners. You might want to check out this CodeProject post: http://www.codeproject.com/Articles/54472/Defining-WPF-Adorners-in-XAML on that topic.