我有自定义ComboBox
的{{1}}。
ItemTemplate
这很有效。但是,WPF尝试将矩形绘制为Combobox Text。如何为此模板设置“文本”。 “text”是指表示所选项目的字符串或控件,当选择项目时写入组合框
换句话说,我想这样做:
但现在我得到了这个
答案 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 编辑: 好像我没有得到你想要完成的东西,