WPF中Combobox中的绑定

WPF中Combobox中的绑定,wpf,data-binding,combobox,styles,Wpf,Data Binding,Combobox,Styles,我是wpf的初学者。实际上,我正在设计一个从数据库接收数据的组合框。 此时,组合框在没有样式的情况下可以正常工作 我已经在样式表中编辑了ComboboxItem控件的ControlTemplate,就像资源字典一样 如果样式应用于带有静态数据的组合框,则该样式工作正常。但是,如果样式应用于带有动态数据的组合框(在本例中是从数据库绑定的),则项目列表只返回对象(显示的项目类似于“Class.Method.Property”),而不是我需要显示的属性的内容 我一直在尝试所有的方法,我在互联网上阅读了

我是wpf的初学者。实际上,我正在设计一个从数据库接收数据的组合框。 此时,
组合框
在没有样式的情况下可以正常工作

我已经在样式表中编辑了
ComboboxItem
控件的
ControlTemplate
,就像资源字典一样

如果
样式
应用于带有静态数据的
组合框
,则该样式工作正常。但是,如果样式应用于带有动态数据的
组合框
(在本例中是从数据库绑定的),则项目列表只返回对象(显示的项目类似于“Class.Method.Property”),而不是我需要显示的属性的内容

我一直在尝试所有的方法,我在互联网上阅读了关于xaml样式和组合框的所有内容,但我无法解决这个问题

My
ContentPresenter
如下所示,返回数据绑定的对象:

<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样式中,您可以将内容演示器留空(
),它将正确显示