Wrappanel 中折叠的项目仍然需要放置

Collapsed Items in Wrappanel still need place

我在 TreeViewItem 中有一个 Wrappanel。 Wrappanel 内的项目可以通过过滤器设置为可见(不可见)。问题是折叠的项目仍然需要一个小地方,这会破坏对齐方式(所有项目都有固定宽度,边距和填充为 0)。
如何删除多余的 space?

XAML 的一部分(在 TreeViewItem 样式内):

<Setter Property="ItemsPanel">
    <Setter.Value>
        <ItemsPanelTemplate>
            <WrapPanel/>
        </ItemsPanelTemplate>
    </Setter.Value>
</Setter>
<Setter Property="ItemTemplate">
    <Setter.Value>
        <DataTemplate>
            <CheckBox IsChecked="{Binding Assigned, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                      ToolTip="{Binding Description}"
                      Click="CheckBox_Clicked"
                      FontFamily="Courier New"
                      Padding="0,0,0,0"
                      Margin="0,0,0,0">
                <TextBlock Text="{Binding FixedLengthName}"/>
                <CheckBox.Visibility>
                    <MultiBinding Converter="{StaticResource PermVisibilityConv}">
                        <Binding Path="IsChecked" ElementName="ChangesOnly"/>
                        <Binding Path="Changed"/>
                        <Binding Path="Visible"/>
                    </MultiBinding>
                </CheckBox.Visibility>
            </CheckBox>
        </DataTemplate>
    </Setter.Value>
</Setter>

没有过滤器:

带过滤器:

感谢ZSH的帮助,我找到了解决办法
仅折叠 CheckBox 是不够的,它周围的 Container 也必须折叠。
在我将 Visibility-Binding 从 CheckBox 移动到 ItemContainerStyle 之后,View 的行为就如它应该的那样。

与上面 XAML 相同的部分,现在没有 space 被折叠的项目占据:

<Setter Property="ItemsPanel">
    <Setter.Value>
        <ItemsPanelTemplate>
            <WrapPanel/>
        </ItemsPanelTemplate>
    </Setter.Value>
</Setter>
<Setter Property="ItemContainerStyle">
    <Setter.Value>
        <Style TargetType="{x:Type TreeViewItem}">
            <Setter Property="Visibility">
                <Setter.Value>
                    <MultiBinding Converter="{StaticResource PermVisibilityConv}">
                        <Binding Path="IsChecked" ElementName="ChangesOnly"/>
                        <Binding Path="Changed"/>
                        <Binding Path="Visible"/>
                    </MultiBinding>
                </Setter.Value>
            </Setter>
        </Style>
    </Setter.Value>
</Setter>
<Setter Property="ItemTemplate">
    <Setter.Value>
        <DataTemplate>
            <CheckBox IsChecked="{Binding Assigned, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                      ToolTip="{Binding Description}" Click="CheckBox_Clicked"
                      FontFamily="Courier New">
                <TextBlock Text="{Binding FixedLengthName}"/>
            </CheckBox>
        </DataTemplate>
    </Setter.Value>
</Setter>