0

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

到目前为止,我考虑过改变 ListBox 的可见性,但这摆脱了整个事情(包括边界线)。

4

2 回答 2

4

你可以绑定VisibilityListBoxItemIsEnabledListBox

<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>
于 2013-07-02T20:06:38.267 回答
0

只需将另一个 ListBox 添加到表单中,当您禁用第一个包含其中元素的列表框时,将其隐藏,然后将另一个列表框显示给用户,这实际上是一个空的灰色列表框。

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

希望这可以帮助。

于 2013-07-02T20:00:18.343 回答