gpt4 book ai didi

wpf - WrapPanel 中的 ListViewItem 折叠时占用空间

转载 作者:行者123 更新时间:2023-12-04 15:48:02 27 4
gpt4 key购买 nike

我有一个 ListView,它使用 WrapPanel 作为它的 ItemsPanel,我直接使用 ListViewItem 作为内容。但是当一个 ListViewItem.VisibilityCollapsed 时,您仍然可以看到它正在使用的空间。

首先,一个类似于我使用的示例 XAML 代码:

<Grid>
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Hidden" ItemContainerStyle="{DynamicResource ContainerStyle}">
<ListView.Resources>
<Style TargetType="{x:Type ListViewItem}" x:Key="ContainerStyle">
<Setter Property="Background" Value="Transparent" />
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<ContentPresenter />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.Resources>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel ItemHeight="200" ItemWidth="200"/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListViewItem Margin="10" Visibility="Visible">
<Border Background="Red"/>
</ListViewItem>
<ListViewItem Margin="10" Visibility="Visible">
<Border Background="Blue"/>
</ListViewItem>
<ListViewItem Margin="10" Visibility="Visible">
<Border Background="Green"/>
</ListViewItem>
</ListView>
</Grid>

例如,当所有项目都可见时(上面的代码)我有这个: All items are visible

但是如果我改变第一个项目让它折叠如下

<ListViewItem Margin="10" Visibility="Collapsed">
<Border Background="Red"/>
</ListViewItem>

结果是这样的: First item is not visible but uses space

我期望的是以下内容: Expected result of collapsing

因此我不明白为什么它会这样,Collapsed 似乎表现得像 Hidden。我正在将它直接应用到项目上,看不到还能做什么。

我尝试了不同的解决方案,最著名的是 this one about binding to Visibility in the stylethis one going more or less in the same direction但没有成功,结果相同。

最佳答案

接受的答案实际上并没有提供解决方案,而是在其评论部分提供了解决方案。

如果您设置 ItemWidth,WrapPanel 将为所有绑定(bind)到自身的项目保留 ItemWidth,无论是否可见。

这里的解决方法是不在 WrapPanel 上设置 ItemWidth,而是在 ItemTemplate 上设置 Width。

<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>

<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel MinWidth="96" />
</DataTemaplate>
</ItemsControl.ItemTemplate>

关于wpf - WrapPanel 中的 ListViewItem 折叠时占用空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40427259/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com