我正在使用一个填充有一些用户级别的组合框:
我还使用Converter来检查Userlevel是否可见。 转换器工作正常。但是这些项目仍在列表中,仅是空的:
我在组合框内使用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>
是否可以使“组合框项目”看起来像这样:
非常感谢。最好的问候
答案 0 :(得分:1)
目前,您仅隐藏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>