WPF中Combobox中的绑定
我是wpf的初学者。实际上,我正在设计一个从数据库接收数据的组合框。 此时,WPF中Combobox中的绑定,wpf,data-binding,combobox,styles,Wpf,Data Binding,Combobox,Styles,我是wpf的初学者。实际上,我正在设计一个从数据库接收数据的组合框。 此时,组合框在没有样式的情况下可以正常工作 我已经在样式表中编辑了ComboboxItem控件的ControlTemplate,就像资源字典一样 如果样式应用于带有静态数据的组合框,则该样式工作正常。但是,如果样式应用于带有动态数据的组合框(在本例中是从数据库绑定的),则项目列表只返回对象(显示的项目类似于“Class.Method.Property”),而不是我需要显示的属性的内容 我一直在尝试所有的方法,我在互联网上阅读了
组合框
在没有样式的情况下可以正常工作
我已经在样式表中编辑了ComboboxItem
控件的ControlTemplate
,就像资源字典一样
如果样式
应用于带有静态数据的组合框
,则该样式工作正常。但是,如果样式应用于带有动态数据的组合框
(在本例中是从数据库绑定的),则项目列表只返回对象(显示的项目类似于“Class.Method.Property”),而不是我需要显示的属性的内容
我一直在尝试所有的方法,我在互联网上阅读了关于xaml样式和组合框的所有内容,但我无法解决这个问题
MyContentPresenter
如下所示,返回数据绑定的对象:
<ContentPresenter
ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}"
Content="{TemplateBinding ContentControl.Content}"/>
有人能帮我吗?显示“Class.Method.Property”,因为WPF不知道如何显示您的类。您需要的是类的数据模板
除非您真的需要它,否则我不会像您在示例中那样深入研究模板
如果您有一个包含对象的数据绑定组合框,并且只想显示绑定对象的属性,则可以执行以下操作:
<ComboBox ItemsSource="{Binding PersonList}"
DisplayMemberPath="FullName" />
如果需要更高级的显示,可以设置ItemTemplate
<ComboBox ItemsSource="{Binding PersonList}">
<ComboBox.ItemTemplate>
<DataTemplate DataType="{x:Type local:Person}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding FullName}" />
<TextBlock Text="{Binding Age}" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
我最近遇到了同样的问题,为了解决它,我的内容演示者现在看起来如下:
<ContentPresenter
Content="{TemplateBinding ComboBox.SelectionBoxItem}"
ContentTemplate="{TemplateBinding ComboBox.SelectionBoxItemTemplate}"
ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}" />
我的问题,就像你的问题一样,是我丢失了ContentTemplateSelector。此外,如果下拉列表显示不正确,我发现在ComboBoxItem样式中,您可以将内容演示器留空(
),它将正确显示