Скрыть элемент со списком - PullRequest
0 голосов
/ 09 ноября 2018

Я использую ComboBox, заполненный некоторыми уровнями пользователя:

full list

Я также использую конвертер, который проверяет, виден ли уровень пользователя или нет.Конвертер работает нормально.Но элементы все еще находятся в списке, они только пустые:

filtered list

Я использую TextBlock внутри Combobox, чтобы показать текст.Вот мой код:

<ComboBox x:Name="UserlevelComboBox" Width="300" Height="50"
               ItemsSource="{Binding Path=UserlevelList}"
               SelectedValue="{Binding Userlevel.Id}"
               SelectedValuePath="Id"
               SelectedItem="{Binding Userlevel}"
               IsSynchronizedWithCurrentItem="True">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Text}">
                <TextBlock.Style>
                    <Style TargetType="{x:Type TextBlock}">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding Path=Userlevel, Converter={StaticResource userlevelConverter}}" Value="False">
                                <Setter Property="Visibility" Value="Collapsed"/>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </TextBlock.Style>
            </TextBlock>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

Возможно ли, чтобы элементы Combobox выглядели так:

enter image description here

Большое спасибо,С наилучшими пожеланиями Фил

1 Ответ

0 голосов
/ 09 ноября 2018

На данный момент вы прячете только текстовые блоки. Но в ComboBox элементы обернуты в элементы контейнера - ComboBoxItem - которые все еще видны.

Примените ваш DataTrigger в ComboBox.ItemContainerStyle.:

<ComboBox x:Name="UserlevelComboBox" Width="300" Height="50"
               ItemsSource="{Binding Path=UserlevelList}"
               SelectedValue="{Binding Userlevel.Id}"
               SelectedValuePath="Id"
               SelectedItem="{Binding Userlevel}"
               IsSynchronizedWithCurrentItem="True">
    <ComboBox.ItemContainerStyle>

        <Style TargetType="{x:Type ComboBoxItem}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=Userlevel, Converter={StaticResource userlevelConverter}}" Value="False">
                    <Setter Property="Visibility" Value="Collapsed"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>

    </ComboBox.ItemContainerStyle>
</ComboBox>
...