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。