Montrer WPF message d'erreur de validation dans un lieu fixe

J'ai eu WPF validation en cours d'exécution (ajouté ValidationRules de la liaison) et avec le modèle je peux créer des beaux ornements. Il y a beaucoup de détachement.

Mais je ne peux pas trouver un moyen d'afficher le message d'erreur à l'extérieur de la ornés de contrôle dans un lieu fixe comme un TextBlock dans un coin de la fenêtre par exemple

Comment pourrais-je y parvenir? Puis-je lier tous mes messages d'erreur de validation pour mon DataContext (ViewModel ici)?


Mise à jour: Merci pour la réponse, je suis partie au travail. La validation des messages sont maintenant affichés dans une autre étiquette. Comme toutes les zones de texte avec leurs règles de validation sont créées à la volée par le code, les contraignant à faire est fait de cette façon:

Binding bindSite = new Binding();
bindSite.Source = this.validationErrorDisplayLabel;
BindingOperations.SetBinding(textBox, Validation.ValidationAdornerSiteProperty, bindSite);

Mais les messages de validation sont uniquement transmises à la adornersite pour la dernière zone de texte pour lequel ce code a été exécuté.


J'ai reproduit le problème dans ce petit exemple.

XAML:

<Grid>
    <TextBox 
        Validation.ValidationAdornerSite="{Binding ElementName=ErrorDisplay}"
        HorizontalAlignment="Left" Height="23" Margin="10,10,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120">
        <TextBox.Text>
            <Binding>
                <Binding.Path>Box1</Binding.Path>
                <Binding.ValidationRules>
                    <local:RuleA />
                </Binding.ValidationRules>
            </Binding>
        </TextBox.Text>
    </TextBox>
    <TextBox 
        Validation.ValidationAdornerSite="{Binding ElementName=ErrorDisplay}"
        HorizontalAlignment="Left" Height="23" Margin="10,38,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120">
        <TextBox.Text>
            <Binding>
                <Binding.Path>Box2</Binding.Path>
                <Binding.ValidationRules>
                    <local:RuleA />
                </Binding.ValidationRules>
            </Binding>
        </TextBox.Text>
    </TextBox>
    <TextBlock 
        x:Name="ErrorDisplay"
        Background="AntiqueWhite"
        Foreground="Red"
        Text="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.ValidationAdornerSiteFor).(Validation.Errors)[0].ErrorContent}"
        HorizontalAlignment="Left" Margin="230,10,0,0" TextWrapping="Wrap" VerticalAlignment="Top" RenderTransformOrigin="2.218,-4.577" Width="177" Height="51"/>
</Grid>

La classe RuleA produit une erreur de validation lorsque la valeur est égale à la chaîne de "A". Les erreurs dans la 2ème zone de texte sont affichés dans le TextBlock, les erreurs du premier pas (elle utilise le modèle par défaut et obtient une bordure rouge).

Comment peut-il travailler pour les deux? Le textblock n'a pas besoin de la somme de toutes les erreurs, mais l'affichage de la première erreur.

OriginalL'auteur ZoolWay | 2014-11-17