禁用ListBox时隐藏ListBox中的项目

本文关键字:ListBox 项目 隐藏 禁用 | 更新日期: 2023-09-27 18:20:49

当标准ListBox被禁用时,其中的元素只是灰显。尽管无法点击,但它们仍然可见。我想知道这是否可能,如果可能,如何在ListBox被禁用时隐藏这些项目。我不想从ItemSource中删除这些元素,也不想为它们创建临时存储。

到目前为止,我曾想过更改ListBox的可见性,但这消除了整个问题(包括边界线)。

禁用ListBox时隐藏ListBox中的项目

您可以将ListBoxItemVisibility绑定到ListBoxIsEnabled

<ListBox ItemsSource="{Binding DataSource}">
    <ListBox.Resources>
        <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
    </ListBox.Resources>
    <ListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <Setter Property="Visibility" Value="{Binding IsEnabled, RelativeSource={RelativeSource AncestorType=ListBox}, Converter={StaticResource BooleanToVisibilityConverter}}" />
        </Style>
    </ListBox.ItemContainerStyle>
</ListBox>

只需向表单中添加另一个ListBox,当禁用第一个包含元素的列表框时,将其隐藏,然后向用户显示另一个列表框,该列表框本质上是一个空的灰色列表框。

然后,当您启用该框时,隐藏空框并显示真实框。

希望这能有所帮助。