1

我像这样填充我的 ComboBox

            using (MorEntities1 c = new MorEntities1())
        {
            var myViewSource = new CollectionViewSource { Source = c.People.ToList() };
            myViewSource.SortDescriptions.Add(
              new SortDescription("Family_Name", ListSortDirection.Ascending)
            );
            CB_Coehn.ItemsSource = myViewSource.View;
            CB_Coehn.DisplayMemberPath = "Family_Name";
            CB_Coehn.SelectedValuePath = "Person_Id";
            CB_Coehn.SelectedIndex = 0;
       } 

但是在数据库中我有一个字段 First Name 和字段 Last Name ,如何查看 ComboBox (LastName , FirstName) 中的两个字段?

这是在 WPF 和 c# 中

提前感谢您的帮助

4

2 回答 2

2

如果您可以控制“People”类,则可以创建一个名为“DisplayName”的新属性,按照您想要的方式对其进行格式化,并将 DisplayMemberPath 设置为该属性:

public string DisplayName
{
    get { return string.format("{0}, {1}", LastName, FirstName); }
}

CB_Coehn.DisplayMemberPath = "DisplayName";

如果您可以在 XAML 中而不是在代码隐藏中完成所有这些操作,那么您可以这样做:

<ComboBox x:Name="CB_Coehn">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <Grid>
                <TextBlock>
                    <TextBlock.Text>
                        <MultiBinding StringFormat="{0}, {1}">
                            <Binding Path="LastName" />
                            <Binding Path="FirstName" />
                        </MultiBinding>
                    </TextBlock.Text>
                </TextBlock>
            </Grid>
        </DataTemplate>
    </ComboBox.ItemTemplate>

注意:我没有测试过这段代码,只是凭记忆,但它至少应该非常接近。

于 2012-08-22T19:29:53.450 回答
1

您需要创建一个itemscontrol itemtemplate包含两个标签的标签,然后将它们的Text属性绑定到 item.firstName 和 item.lastName。

有关示例,请参见此处。

于 2012-08-22T19:26:54.387 回答