wpf combobox与自定义itemtemplate文本

时间:2012-12-04 08:32:41

标签: c# .net wpf combobox itemtemplate

我有自定义ComboBox的{​​{1}}。

ItemTemplate

这很有效。但是,WPF尝试将矩形绘制为Combobox Text。如何为此模板设置“文本”。 “text”是指表示所选项目的字符串或控件,当选择项目时写入组合框

换句话说,我想这样做:

enter image description here

但现在我得到了这个

enter image description here

3 个答案:

答案 0 :(得分:1)

尝试使用TextBlock设置SelectionBoxItemTemplate。 看起来SelectionBoxItemTemplate是只读的。所以另一种方法是重写ItemContainerStyle.Template。 Example

答案 1 :(得分:0)

我通过 Ray Burns 找到了this解决方案。您可以在下拉列表中为项目定义两个DataTemplate,为Combobox中应显示的所选项目定义另一个<Window.Resources> <DataTemplate x:Key="NormalItemTemplate" ...> ... </DataTemplate> <DataTemplate x:Key="SelectionBoxTemplate" ...> ... </DataTemplate> <DataTemplate x:Key="CombinedTemplate"> <ContentPresenter x:Name="Presenter" Content="{Binding}" ContentTemplate="{StaticResource NormalItemTemplate}" /> <DataTemplate.Triggers> <DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor,ComboBoxItem,1}}" Value="{x:Null}"> <Setter TargetName="Presenter" Property="ContentTemplate" Value="{StaticResource SelectionBoxTemplate}" /> </DataTrigger> </DataTemplate.Triggers> </DataTemplate> </Window.Resources> ... <ComboBox ItemTemplate="{StaticResource CombinedTemplate}" ItemsSource="..."/> 。使用触发器并检查可视树,它决定使用哪一个。

jQuery

答案 2 :(得分:-1)

将Textblock添加到datatemplate并绑定它 或在矩形上添加Contentpersenter 编辑: 好像我没有得到你想要完成的东西,