禁用ListBox时隐藏ListBox中的项目
本文关键字:ListBox 项目 隐藏 禁用 | 更新日期: 2023-09-27 18:20:49
当标准ListBox被禁用时,其中的元素只是灰显。尽管无法点击,但它们仍然可见。我想知道这是否可能,如果可能,如何在ListBox被禁用时隐藏这些项目。我不想从ItemSource中删除这些元素,也不想为它们创建临时存储。
到目前为止,我曾想过更改ListBox的可见性,但这消除了整个问题(包括边界线)。
您可以将ListBoxItem
的Visibility
绑定到ListBox
的IsEnabled
<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,当禁用第一个包含元素的列表框时,将其隐藏,然后向用户显示另一个列表框,该列表框本质上是一个空的灰色列表框。
然后,当您启用该框时,隐藏空框并显示真实框。
希望这能有所帮助。