23

我正在尝试将两个值绑定到 ComboBox 显示值,但我不知道该怎么做。

这种方式行不通:

cboRegion.DisplayMemberPath = "idregion" + "description";

有谁知道如何在 C# 中做到这一点?

4

3 回答 3

72

不幸的是,这是不可能的DisplayMemberPath。您有以下选择:

  • 指定数据模板

    <ComboBox>
      <ComboBox.ItemTemplate>
        <DataTemplate>
          <TextBlock>
            <TextBlock.Text>
              <MultiBinding StringFormat="{}{0}: {1}">
                <Binding Path="idregion"/>
                <Binding Path="description"/>
              </MultiBinding>
            </TextBlock.Text>
          </TextBlock>
        </DataTemplate>
      </ComboBox.ItemTemplate>
    </ComboBox>
    

    (如果您想知道 StringFormat 属性中的空括号,请参阅:{} 括号在 Binding 语法的 StringFormat 部分中的含义是什么?

  • 将属性或字段添加到您的数据源。如何做到这一点取决于您的数据源:

    如果您的组合框绑定到 DataTable,请添加 DataColumn 并在循环中填充其值。或者,更改您的 SQL 并将连接的值添加到您的SELECT子句。

    如果您的组合框绑定到 POCO 或实体框架对象,请添加一个返回串联的属性。

于 2012-04-17T08:10:16.747 回答
23

您需要使用DataTemplate

<ComboBox Name="cboRegion">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock>
                <Run Text="{Binding idregion}" />
                <Run Text="{Binding description}" />
            </TextBlock>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>
于 2012-04-17T08:07:58.617 回答
1

您可以创建一个视图,连接两个字段,然后在您的 itemssource 属性中引用新视图之后(并在更新您的实体框架模型之后),然后在 c# 中的 DisplayMemberPath 属性中引用连接的字段名称

于 2014-04-30T21:20:38.127 回答