Прежде всего, вы должны использовать стандартную проверку для чего-то вроде того, что вы делаете. Из вашего комментария выше я могу сказать, что это то, что вы делаете, и вы должны знать, что у WPF действительно хорошая встроенная система для выполнения именно того, что вы хотите, без необходимости делать это (и очень многоразово).
Вот пример стиля, который вы можете применить, скажем, ко всем текстовым полям, когда значение, к которому привязано значение, не проверяется (с использованием IDataErrorInfo).
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip">
<Setter.Value>
<ToolTip Content="{Binding RelativeSource={RelativeSource Self},
Path=(Validation.Errors)[0].ErrorContent}" IsOpen="true" />
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
Вы также можете рассмотреть более стандартный пользовательский интерфейс, который использует уровень рекламного элемента, чтобы поместить индикатор ошибки проверки рядом с элементом управления, который не прошел проверку. Вот пример на этом:
http://blogsprajeesh.blogspot.com/2009/03/handling-error-in-wpf-idataerrorinfo.html
Удачи.