Multiselect ComboBox,强制它始终显示相同的文本

时间:2012-11-22 18:03:04

标签: wpf

我有一个多选组合框可以正常工作。除了文字。我希望它始终具有相同的文本(“商品过滤器”),无论用户选择了什么。

如果我将iseditable设置为true并将文本设置为CommodityFilter,那么在用户进行选择之前它看起来很好,那么它就是垃圾(显示对象类型名称)。我怎么能在那里硬编码一些文字? (实际上理想情况下,我会根据是否选择了任何内容来对其进行数据处理,但这会是一个额外的奖励)

 <ComboBox IsEditable="True" Text ="Commodity Filter" ItemsSource="{Binding Path=ActiveCommodities}">
                <ComboBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <CheckBox IsChecked="{Binding IsSelected}"
                                      Width="20" />
                            <TextBlock Text="{Binding Commodity}"
                                       Width="100" />
                        </StackPanel>
                    </DataTemplate>
                </ComboBox.ItemTemplate>
            </ComboBox>

2 个答案:

答案 0 :(得分:0)

我最终创建了一个自定义对象,用于填充ComboBox(具有IsSelected属性并实现INotifyPropertyChanged),因为我创建了几个组合框来控制过滤。一旦我这样做,这是微不足道的覆盖customobject上的tostring并传入适当的文本。所以xaml没有太大变化。

我本来希望用文本框覆盖,但这似乎超出了我在合理的时间内获得精美外观的能力。

   <ComboBox  ItemsSource="{Binding Path=ActiveFuturesMonths}"
               IsEditable="True"
               IsReadOnly="True"
               Text="Futures Month Filter" >
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <CheckBox IsChecked="{Binding IsSelected}"
                              Width="20" />
                    <TextBlock Text="{Binding Text}"
                               Width="100" />
                </StackPanel>
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>

答案 1 :(得分:0)

实际上症结在于 -     IsEditable =&#34;真&#34;     IsReadOnly =&#34;真&#34;     文字=&#34;期货月过滤&#34;

而不是创建自定义对象。非常感谢它帮助了。