Ich habe eine StackPanel
, die eine TextBox
mit einem Titel und eine ItemsControl
mit Elementen enthält. Ich möchte das gesamte StackPanel ausblenden, wenn die Liste leer ist. Anstatt einen dedizierten Converter für die Bindung zu schreiben, wollte ich QuickConverter (https://quickconverter.codeplex.com/) ausprobieren. QuickConverter ermöglicht die Verwendung von Inline-C# -Ausdrücken in Bindungen.WPF QuickConverter: Element in der leeren Liste ausblenden
Das ist also mein Aufschlag:
<StackPanel Visibility="{qc:Binding '$P > 0 ? Visibility.Visible : Visibility.Collapsed', P={Binding Path=Value.Count}}"> <!-- this does not work. It's always shown, regardless of the element count -->
<TextBlock Text="{qc:Binding '$P', P={Binding Path=Value.Count}}"></TextBlock> <!-- for debugging purposes only. It correctly shows the element count for the list -->
<TextBlock Text="{qc:Binding '$P.Count', P={Binding Path=Value}}"></TextBlock> <!-- for debugging purposes only. It should do the same as the line above, but it does nothing -->
...
<ItemsControl ItemsSource="{Binding Path=Value}">
...
</ItemsControl>
</StackPanel>
Der erste Textblock wird das erwartete Ergebnis angezeigt wird, wird alle andere QuickConverter Ausdrücke arbeiten scheitern. Es gibt keine Fehler oder Ausnahmen, weder zur Entwurfszeit noch zur Laufzeit.
Vielen Dank für Ihre Ideen.
Chris.
Sie verwenden ** ** Trigger, wenn Sie verstecken ** ** Stackpanel ohne Konverter – Amine
gesamte möchte ich verwendet habe, dass in Situationen, in denen ich benötigt, um den Container der Elemente zu verstecken. Aber ich weiß nicht, wie ich die Eltern des Containers ansprechen soll. Ich zögere, ihm einen Namen zu geben, da sich das StackPanel selbst in der DataTemplate eines ItemsControls befindet, so dass sein Name nicht eindeutig ist. – Christophe
das ItemsControl ist nicht eindeutig? – Amine