none
Cacher Listbox quand zero item RRS feed

  • 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
    jeudi 24 décembre 2015 15:52

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>

    vendredi 25 décembre 2015 19:13
  • 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

    samedi 26 décembre 2015 11:03
  • 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
    samedi 26 décembre 2015 11:17