Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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>

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

Ответ 2

Сделайте это в триггере, и вам не понадобится 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 скрыт.

Ответ 3

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

Установить видимость:

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

Затем настройте конвертер, чтобы вернуть Visibility.Collapsed и т.д. на основе значения count.

Ответ 4

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