【问题标题】:WPF ComboBox displaying Object Type after stylingWPF ComboBox在样式后显示对象类型
【发布时间】:2010-03-25 15:58:28
【问题描述】:

在我的项目中,我使用 ComboBox 和自定义对象(如员工)并使用 DisplayMemberPath="Description"。 这一切都按预期完美运行。

因为这个应用程序的目标是与触摸屏一起使用,所以我必须设置滚动条的样式并使其更宽,这意味着我必须为 ScrolViewer 创建一个新模板。结果也很好。

当我必须为我需要的 ComboBox 创建一个新的 ControlTemplate 以便我可以将 ScrollViewerControlTemplate 添加到 ComboBox 的 ScrollViewer 时,问题就出现了。我使用 Blend 为我生成 ControlTemplate,然后将 ScrollViewerControlTemplate 绑定到 ComboBox ControlTemplate 中的 ScrollViewer。

非常好,唯一的问题是 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}" />

任何帮助将不胜感激。

【问题讨论】:

  • 我没有时间弄清楚到底是什么问题,但我解决问题的方法是创建一个新窗口,将一个 ComboBox 拖到页面上并再次生成 Xaml 并复制所有将其放入 App.Xaml 文件中。我想我错过了一些导致问题的样式。

标签: wpf combobox wpf-controls


【解决方案1】:

在您的ComboBox 模板中,该区域的内容应绑定到SelectionBoxItem 属性。因此,如果您使用 ContentPresenter 来显示选择:

<ContentPresenter ContentSource="SelectionBoxItem" />

如果您使用的是ToggleButton 的内容区域,您可以这样做:

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

【讨论】:

  • 嘿伙计,对不起,我无法将此标记为您的答案,因为我已经更改并修复了问题,无法测试您的建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-05
  • 1970-01-01
  • 2014-11-11
  • 2019-07-11
相关资源
最近更新 更多