Wpf 多选组合框,强制它始终显示相同的文本

Wpf 多选组合框,强制它始终显示相同的文本,wpf,Wpf,我有一个多选组合框,效果很好。除了文本。我希望它总是有相同的文本(“商品过滤器”),无论用户选择了什么 如果我将iseditable设置为true,将文本设置为CommodityFilter,则在用户做出选择之前,它看起来很好,然后它就是垃圾(显示对象类型名称)。我如何在那里硬编码一些文本?(实际上,理想情况下,我会对其进行数据绑定,这样它就可以根据是否选择了任何内容进行更改,但在这一点上,这将是一个额外的好处) 我最终创建了一个用于填充组合框的自定义对象(它有IsSelected属性并实现了I

我有一个多选组合框,效果很好。除了文本。我希望它总是有相同的文本(“商品过滤器”),无论用户选择了什么

如果我将iseditable设置为true,将文本设置为CommodityFilter,则在用户做出选择之前,它看起来很好,然后它就是垃圾(显示对象类型名称)。我如何在那里硬编码一些文本?(实际上,理想情况下,我会对其进行数据绑定,这样它就可以根据是否选择了任何内容进行更改,但在这一点上,这将是一个额外的好处)


我最终创建了一个用于填充组合框的自定义对象(它有
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>

事实上关键在于设置- IsEditable=“True” IsReadOnly=“True” Text=“期货月份过滤器”


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

AFAIK,您必须提取组合框的模板,并对其进行自定义才能完成此操作。MSDN示例:显示的文本使用与下拉列表相同的ItemTemplate。它向您显示的是对象名,而不是您想要的,因为它不知道要在复杂对象中公开哪个属性。如果你想做你所说的,那就用另一个文本框覆盖这个组合框。@Xcalibur37你的解决方案(用另一个文本框覆盖这个组合框)太明显了,会有伤害。我会张贴它作为答案,一旦我有它看起来漂亮。除非有更好的事情发生。@PatFromCanada:好吧,或者code4life建议的那样就可以了。这实际上取决于您希望如何覆盖模板。如果您能看到项目代码4Life之外的一些可重用性,那么Life的解决方案就是一条出路。
   <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>