Xamly определить, если ListBox.Items.Count > 0

Есть ли способ в XAML определить, есть ли данные в ListBox?

Я хочу установить для свойства IsVisibile значение false, если нет данных.

4 ответа

Решение

ListBox содержит свойство HasItems, к которому вы можете привязаться. Так что вы можете просто сделать это:

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

Или как триггер, поэтому вам не нужен конвертер:

<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>

Я не проверял привязки, поэтому могут быть некоторые опечатки, но вы должны понять.

Сделайте это в триггере, и вам не понадобится ValueConverter:

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

Так что это показывает ListBox по умолчанию, но если Items.Count когда-либо 0, ListBox скрыт.

<ListBox.Style>
    <Style TargetType="ListBox">
        <Setter Property="Visibility" Value="Visible"/>
        <Style.Triggers>
            <Trigger Property="HasItems" Value="False">
                <Setter Property="Visibility" Value="Hidden"/>
            </Trigger>
        </Style.Triggers>
    </Style>
</ListBox.Style>

Вы, вероятно, можете сделать это, используя ValueConverter и обычную привязку.

Установите видимость, чтобы быть:

Visibility = "{Binding myListbox.Items.Count, Converter={StaticResource VisibilityConverter}}"

Затем настройте конвертер так, чтобы он возвращал Visibility.Collapsed и т. Д. В зависимости от значения счетчика.

Другие вопросы по тегам