Есть ли способ в XAML, чтобы определить, есть ли в ListBox данные?
Я хочу установить для свойства IsVisibile значение false, если нет данных.
Есть ли способ в XAML, чтобы определить, есть ли в ListBox данные?
Я хочу установить для свойства IsVisibile значение false, если нет данных.
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 скрыт.
Возможно, вы можете сделать эту работу с помощью ValueConverter и нормального привязки.
Установить видимость:
Visibility = "{Binding myListbox.Items.Count, Converter={StaticResource VisibilityConverter}}"
Затем настройте конвертер, чтобы вернуть Visibility.Collapsed и т.д. на основе значения count.
<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>