2

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

如果我将 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>
4

2 回答 2

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>
于 2012-11-22T21:21:56.947 回答
0

实际上关键在于设置 - IsEditable="True" IsReadOnly="True" Text="Futures Month Filter"

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

于 2015-09-03T12:30:36.763 回答