WPF - 隐藏列表框项目

c95*_*mbq 20 wpf visibility listbox

我有一个listtemplate正在使用样式的列表框.样式指定带有数据触发器的边框,根据属性设置要折叠的边框的可见性.这工作正常,但我仍然可以看到列表中折叠的每个项目的非常窄的行.我希望有人可以帮助设置可见性,以便没有可见的痕迹,因为当连续项目折叠时这是非常明显的.

datatemplate指定了一个带有dockpanel的外边框 - 然后有一个与之对接的stackpanels.

任何帮助表示赞赏.

那么这是一个简化的模板:

<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>
Run Code Online (Sandbox Code Playgroud)

Col*_*inE 39

您成功地隐藏了项目,但是,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>
Run Code Online (Sandbox Code Playgroud)