当标准 ListBox 被禁用时,其中的元素只是变灰。尽管不可点击,但它们仍然可见。我想知道是否有可能,如果有,在禁用 ListBox 时如何隐藏这些项目。我不想从 ItemSource 中删除元素或为它们创建临时存储。
到目前为止,我考虑过改变 ListBox 的可见性,但这摆脱了整个事情(包括边界线)。
你可以绑定Visibility
到ListBoxItem
的IsEnabled
ListBox
<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 添加到表单中,当您禁用第一个包含其中元素的列表框时,将其隐藏,然后将另一个列表框显示给用户,这实际上是一个空的灰色列表框。
然后,当您重新启用该框时,隐藏空的并显示真实的。
希望这可以帮助。