【问题标题】:ComboBoxItem Will Not CollapseComboBoxItem 不会折叠
【发布时间】:2015-05-10 20:55:13
【问题描述】:

我写了一个基本的可见性转换器,当属性“Active”为真时,ComboBoxItem 应该是可见的,否则折叠。它当前正确显示活动的,非活动的文本是不可见的,但仍然可以看到该项目。

http://snag.gy/Mh2Xq.jpg

请问如何让 ComboBoxItem 正确折叠不活动的组合框项。

<ComboBox Grid.Row="1" Grid.Column="2" SelectedItem="{Binding Product, Mode=TwoWay}" ItemsSource="{Binding Products}" VerticalContentAlignment="Center">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding Name}">
                    <TextBlock.Style>
                        <Style TargetType="{x:Type TextBlock}">
                            <Setter Property="Visibility" Value="{Binding Active, Converter={StaticResource VisibilityConverter }}"></Setter>
                        </Style>
                    </TextBlock.Style>
                </TextBlock>
            </StackPanel>
        </DataTemplate>
   </ComboBox.ItemTemplate>
</ComboBox>

【问题讨论】:

标签: wpf


【解决方案1】:

改为将可见性转换器应用于父堆栈面板。像这样:

<StackPanel Orientation="Horizontal" Visibility="{Binding Active, Converter={StaticResource VisibilityConverter}}">
...
</StackPanel>

【讨论】:

  • 或移除stackpanel +1
  • 您好,两种方法我都试过了。我删除了堆栈面板并尝试将转换器放入父级,但相同的行为仍然存在。
  • 我添加了一个组合框资源,效果很好!不太清楚为什么你的方法不起作用。
【解决方案2】:
<ComboBox.Resources>
    <Style TargetType="ComboBoxItem">
        <Setter Property="Visibility"  Value="{Binding Active, Converter={StaticResource VisibilityConverter}}" />
    </Style>
</ComboBox.Resources>

【讨论】:

    【解决方案3】:

    你应该根据 IsActive 过滤绑定列表

    尝试将comboBox绑定到

    Products.Where(t => t.IsActive)
    

    【讨论】:

    • 抱歉不是我想要的。我正在寻找要折叠的组合框
    • 我建议采用一种简洁的方式,如果您使用 mvvm,VM 中的过滤列表会让您的生活更轻松 :)
    猜你喜欢
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 2014-04-29
    • 1970-01-01
    • 2016-11-18
    • 2017-06-17
    • 2016-02-06
    相关资源
    最近更新 更多