Auteur de questions
Cacher Listbox quand zero item

Question
-
Bonjour, j'ai un logiciel en wpf et j'aimerais que quand il n'y a pas d’éléments dans la listbox que la listbox disparaisse.
On peut le voir sur l'image en dessous que cela est vraiment moche (La listbox est le 2ème éléments) :
http://puu.sh/m7cCS/ab3e462d98.png
Code listbox dans MainWindow :
<ListBox Name="lbResult" MaxHeight="330" Height="Auto" Margin="8,0,8,10" ItemTemplate="{StaticResource ResourceKey=ListBoxItemStyle}" Background="#616161" Style="{StaticResource ResourceKey=ListBoxStyleFlat}" SelectionChanged="lbResult_SelectionChanged"/>
ListBoxStyleFlat :
<Style x:Key="ControlStyleFlat"> <Setter Property="Control.BorderThickness" Value="0"/> <Setter Property="Control.Padding" Value="1"/> <Setter Property="Control.AllowDrop" Value="true"/> <Setter Property="Control.FocusVisualStyle" Value="{x:Null}"/> <Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst"/> <Setter Property="Stylus.IsFlicksEnabled" Value="False"/> <Setter Property="Control.Foreground" Value="White"/> </Style> <Style x:Key="ListBoxStyleFlat" BasedOn="{StaticResource ControlStyleFlat}" TargetType="{x:Type ListBox}"> <Setter Property="BorderBrush" Value="Transparent"/> <Setter Property="Background" Value="Transparent"/> <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled"/> <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/> </Style>
J'espère que vous pourrez m'aider.
- Modifié Urgau jeudi 24 décembre 2015 15:56
Toutes les réponses
-
-
Merci de t'a réponse mais le post date de 2008 et WPF à bcp changer depuis. Mais j'ai trouver cette solution :
<Style.Triggers> <DataTrigger Binding="{Binding ElementName=lbResult, Path=Items.Count}" Value="0"> <Setter Property="Visibility" Value="Collapsed"/> </DataTrigger> </Style.Triggers>
-
Autre solution si vous faites une approche MVVM :
Vous ajoutez une prop IsVisible à votre ViewModel :
public bool IsVisible{
get{ return items.Count > 0;}
}
Et un binding
<ListBox Visibility={Binding IsVisible, Converter={StaticResource BooleanToVisibilityConverter}}
Richard Clark
Consultant - Formateur .NET
http://www.c2i.fr
Depuis 1996: le 1er site .NET francophone -
Je pense que ta List Box doit mieux être faite du côté C#, voici un petit exemple:
XAML:
<Gridx:Name="element">
</Grid>
C# :
ListBox souselement = new ListBox(); souselement.MaxHeight = 330; ... souselement.Style = Resources["ListBoxStyleFlat"] as Style; souselement.SelectionChanged += lbResult_SelectionChanged; //Quand la ListBox n'est pas vide on ajoute la ListBox element.Children.Insert(0,souselement); //Quand la ListBox est vide on la supprime element.Children.RemoveAt(0);
- Modifié Sami54 samedi 26 décembre 2015 11:30