Xamly determine if a ListBox.Items.Count > 0

Shimmy Weitzhandler picture Shimmy Weitzhandler · Sep 6, 2009 · Viewed 18.2k times · Source

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

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

Answer

Bryan Anderson picture Bryan Anderson · Sep 8, 2009

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.