Frage

I-Expander, die Textfelder enthalten, verwenden Sie die Textfelder die wpf Validierung Sachen ein rotes Feld um sie herum zu zeichnen (Textfelder in Adorner Zierer gewickelt werden, um sicherzustellen, ich nicht leer rot-Box überall bekommen kann, wenn die Expander sind kollabiert)

Ich möchte in der Kopfzeile des Expanders, um anzuzeigen, dass es sich um Inhalte, die Fehler hat haben (falls es in einem zusammengeklappten Zustand ist) - ein Symbol oder ein rotes Ausrufezeichen oder so etwas. Ich glaube, ich sehe einen Weg aus meiner Validierungsfunktion in Code zu tun (nicht ideal), aber ist es eine Möglichkeit, es in XAML zu tun? Kann ich einen Stil für den Expander mit einem Trigger verwenden irgendwie zum Validation.HasError aller Kinder zeigen?

Vielen Dank für alle Gedanken ..

Trev

War es hilfreich?

Lösung

Wenn Sie den Inhalt Ihres Expanders kennen, können Sie eine Multidatatrigger verwenden, dies zu tun:

<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>

Wenn der Inhalt des Expanders nicht bekannt ist, dann werden Sie wahrscheinlich Binding.NotifyOnValidationError auf den Textfeldern gesetzt und den Fehler angebracht Ereignis zu behandeln.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top