隐藏组合框项目
Hide ComboBox Item
我正在使用填充了一些用户级别的 ComboBox:
我还使用转换器来检查用户级别是否可见。
转换器工作正常。但项目仍在列表中,它们只是空的:
我在 Combobox 中使用 TextBlock 来显示文本。
这是我的代码:
<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>
是否可以让组合框项目看起来像这样:
非常感谢。最好的问候菲尔
目前您只隐藏了 TextBlocks。但是在 ComboBox 中,项目被包装在容器项目中 - ComboBoxItem - 仍然可见。
在 ComboBox.ItemContainerStyle 中应用您的 DataTrigger。:
<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:
我还使用转换器来检查用户级别是否可见。 转换器工作正常。但项目仍在列表中,它们只是空的:
我在 Combobox 中使用 TextBlock 来显示文本。 这是我的代码:
<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>
是否可以让组合框项目看起来像这样:
非常感谢。最好的问候菲尔
目前您只隐藏了 TextBlocks。但是在 ComboBox 中,项目被包装在容器项目中 - ComboBoxItem - 仍然可见。
在 ComboBox.ItemContainerStyle 中应用您的 DataTrigger。:
<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>