wpfxamllistbox

Xamly determine if a ListBox.Items.Count > 0


Is there a way in XAML to determine if the ListBox has data?

I wanna set its IsVisibile property to false if no data.


Solution

  • The ListBox contains a HasItems property you can bind to. So you can just do this:

    <BooleanToVisibilityConverter x:Key="BooleanToVisibility" />
    ...
    <ListBox 
        Visibility="{Binding HasItems, 
          RelativeSource={RelativeSource Self}, 
          Converter=BooleanToVisibility}" />
    

    Or as a Trigger so you don't need the converter:

    <ListBox>
      <ListBox.Style>
        <Style TargetType="{x:Type ListBox}">
          <Setter Property="Visibility" Value="Visible" />
          <Style.Triggers>
            <DataTrigger 
                Binding="{Binding HasItems, RelativeSource={RelativeSource Self}}"
                Value="False">
              <Setter Property="Visibility" Value="Hidden" />
            </DataTrigger>
          </Style.Triggers>
        </Style>
      </ListBox.Style>
    </ListBox>
    

    I haven't tested the bindings so there might be some typos but you should get the idea.