在我的项目中,我使用ComboBox和我的自定义对象(如Employees)并使用DisplayMemberPath =“Description”。 这一切都像预期的那样完美。
因为这个应用程序的目标是与触摸屏一起使用,所以我不得不设置滚动条的样式并使其更宽,这意味着我必须为ScrolViewer创建一个新模板。结果也非常好。
当我不得不为我需要的ComboBox创建一个新的ControlTemplate时,问题出现了,这样我就可以将ScrollViewerControlTemplate添加到ComboBox的ScrollViewer中。我使用Blend为我生成ControlTemplate,然后将ScrollViewerControlTemplate绑定到ComboBox ControlTemplate中的ScrollViewer。
Excelent,唯一的问题是ComboBox在控件的下拉部分显示正确的文本,但控件的ToggleButton部分显示对象类型,即[NameSpace] .Employee。
我尝试更改ContentPresenter但没有取得多大成功。
<ContentPresenter
Content="{TemplateBinding SelectionBoxItem}"
ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}"
Margin="{TemplateBinding Padding}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
非常感谢任何帮助。
答案 0 :(得分:1)
在您的ComboBox
模板中,该区域的内容应绑定到SelectionBoxItem
属性。因此,如果您使用ContentPresenter
来显示选择:
<ContentPresenter ContentSource="SelectionBoxItem" />
如果您使用的是ToggleButton
的内容区域,则可以执行以下操作:
<ToggleButton Content="{TemplateBinding SelectionBoxItem}"
ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}" />