WPF ComboBox, отображающий тип объекта после стилизации - PullRequest
0 голосов
/ 25 марта 2010

В моем проекте я использую ComboBox с моими пользовательскими объектами, такими как Employees, и использую DisplayMemberPath = "Description". Это все работает отлично, как и ожидалось.

Поскольку это приложение предназначено для использования с сенсорным экраном, мне пришлось стилизовать полосу прокрутки и сделать ее более широкой, что означало, что мне нужно было создать новый шаблон для ScrolViewer. Это тоже получилось довольно красиво.

Проблема возникает, когда мне нужно было создать новый ControlTemplate для ComboBox, который мне нужен, чтобы я мог добавить ScrollViewerControlTemplate в ScrollViewer ComboBox. Я использовал Blend для генерации ControlTemplate для меня, а затем привязал ScrollViewerControlTemplate к ScrollViewer в ComboBox ControlTemplate.

Исключительно, единственная проблема заключается в том, что 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}" />

Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 25 марта 2010

В вашем шаблоне ComboBox содержимое этой области должно быть привязано к свойствам SelectionBoxItem. Итак, если вы используете ContentPresenter для отображения выбора:

<ContentPresenter ContentSource="SelectionBoxItem" />

Если вы используете область содержимого ToggleButton, вы должны сделать что-то вроде этого:

<ToggleButton Content="{TemplateBinding SelectionBoxItem}"
              ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
              ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}" />
...