我有一个多选组合框可以正常工作。除了文字。我希望它始终具有相同的文本(“商品过滤器”),无论用户选择了什么。
如果我将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>
答案 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;
而不是创建自定义对象。非常感谢它帮助了。