Wpf 隐藏组合框项

Wpf 隐藏组合框项,wpf,xaml,combobox,itemtemplate,Wpf,Xaml,Combobox,Itemtemplate,我正在使用一个组合框,其中包含一些用户级别: 我还使用一个转换器来检查用户级别是否可见。 转炉运转良好。但项目仍在列表中,它们仅为空: 我在组合框中使用一个文本块来显示文本。 这是我的密码: <ComboBox x:Name="UserlevelComboBox" Width="300" Height="50" ItemsSource="{Binding Path=UserlevelList}" SelectedValue="

我正在使用一个组合框,其中包含一些用户级别:

我还使用一个转换器来检查用户级别是否可见。 转炉运转良好。但项目仍在列表中,它们仅为空:

我在组合框中使用一个文本块来显示文本。 这是我的密码:

<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中,项目被包装在容器项目ComboBoxItem中,这些项目仍然可见

在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>


在ComboBox.ItemContainerStyle中应用数据触发器。目前,您只隐藏文本块。ComboBoxItems仍然可见为什么不在VeiwModel中提供筛选列表?然后您可以绑定到此列表。是否尝试禁用默认/选定项?在我看来,它并没有出现在下拉列表中,但仍然出现在文本字段中。谢谢,这是有效的。我刚刚添加了一个显示文本的ItemTemplate:@Phil,wpf创建TextBlocks来显示任何文本。所以ComboBox将创建文本块来显示ComboBoxItems中的文本。对不起,我没有注意到
{Binding Text}
部分。它改变了显示。作为ItemTemplate set DisplayMemberPath的替代方案:
@ASh:是的,你说得对。您也可以使用DisplayMemberPath。