Comment puis-je indiquer dans un en-tête d'Expander que le contenu réduit a une erreur

StackOverflow https://stackoverflow.com/questions/306074

  •  08-07-2019
  •  | 
  •  

Question

J'ai des expandeurs contenant des zones de texte. Les zones de texte utilisent les éléments de validation wpf pour dessiner une zone rouge autour d'eux. effondré)

Je veux indiquer dans l'en-tête de l'extension que le contenu contient des erreurs (dans le cas où il est réduit) - une icône ou un point d'exclamation rouge ou quelque chose d'autre. Je pense que je vois un moyen de faire cela dans le code à partir de ma fonction de validation (pas idéale) mais existe-t-il un moyen de le faire avec xaml? Puis-je utiliser un style pour l’extenseur avec un déclencheur pointant vers la Validation.HasError de tous les enfants?

merci pour vos pensées ..

Trev

Était-ce utile?

La solution

Si vous connaissez le contenu de votre expandeur, vous pouvez utiliser un MultiDataTrigger pour le faire:

<Expander>
    <Expander.Header>
        <TextBlock>
            <TextBlock.Style>
                <Style TargetType="{x:Type TextBlock}">
                    <Setter Property="Text" Value="ERROR"/>
                    <Style.Triggers>
                        <MultiDataTrigger>
                            <MultiDataTrigger.Conditions>
                                <Condition Binding="{Binding ElementName=txtWidth, Path=(Validation.HasError)}" Value="False"/>
                                <Condition Binding="{Binding ElementName=txtHeight, Path=(Validation.HasError)}" Value="False"/>
                            </MultiDataTrigger.Conditions>
                            <Setter Property="Text" Value="NO ERROR"/>
                        </MultiDataTrigger>
                    </Style.Triggers>
                </Style>
            </TextBlock.Style>
        </TextBlock>
    </Expander.Header>
    <StackPanel>
        <TextBox x:Name="txtWidth" Text="{Binding Width, ElementName=rect, UpdateSourceTrigger=PropertyChanged, ValidatesOnExceptions=True}"/>
        <TextBox x:Name="txtHeight" Text="{Binding Height, ElementName=rect, UpdateSourceTrigger=PropertyChanged, ValidatesOnExceptions=True}"/>
        <Rectangle x:Name="rect" Width="100" Height="100" Margin="10" Fill="Green"/>
    </StackPanel>
</Expander>

Si le contenu de l'extension ne est pas connu, vous devrez probablement définir Binding.NotifyOnValidationError sur la zone de texte et gérer l'événement Error attaché.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top