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 и т. Д. В зависимости от значения счетчика.