WPF - скрытие элементов списка
У меня есть список, в котором itemtemplate использует стиль. Стили задают границу с помощью datatrigger, устанавливая видимость границы для свертывания в зависимости от свойства. Это отлично работает, но я все еще вижу очень узкую строку для каждого элемента, в списке, который рухнул. Я надеялся, что кто-то может помочь в том, как установить видимость, чтобы не было видимых следов, поскольку это совершенно очевидно, когда последовательные элементы были свернуты.
Элемент datatemplate указывает внешнюю границу с док-панелью внутри этого - тогда будут состыкованы стековые панели.
Любая помощь приветствуется.
Ну, это упрощенный шаблон:
<DataTemplate x:Key="myTemplate">
<Border BorderThickness="0">
<Border.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsActive}" Value="False">
<Setter Property="Border.Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<DockPanel LastChildFill="True" HorizontalAlignment="Stretch">
<StackPanel DockPanel.Dock="Right" HorizontalAlignment="Right" >
<TextBlock Text="{Binding Path=SeqNo, Converter={StaticResource SeqToTextConv}}"/>
<Label Content="..." />
</StackPanel>
</DockPanel>
</Border>
</DataTemplate>
Ответы
Ответ 1
Вы успешно скрываете свой элемент, однако ListBox обертывает каждый из ваших элементов в ListBoxItem, это добавляет такие понятия, как выбор в ваш элемент. Я подозреваю, что вы все еще видите ListBoxItem в случае, когда ваши элементы скрыты. Вы можете использовать ItemContainerStyle, чтобы скрыть объекты ListBoxItems...
<ListBox>
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsActive}" Value="False">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>