DisplayMemberPath连接

时间:2012-04-17 08:02:08

标签: .net wpf combobox

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

这种方式不起作用:

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

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

3 个答案:

答案 0 :(得分:55)

不幸的是,DisplayMemberPath无法做到这一点。您有以下选择:

  • 指定DataTemplate

    <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属性中的空括号,请参阅:What do the {} brackets mean in the StringFormat section of a Binding syntax?

  • 向数据源添加媒体资源或字段。如何做到这一点取决于您的数据源:

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

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

答案 1 :(得分:17)

您需要使用DataTemplate

<ComboBox Name="cboRegion">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock>
                <Run Text="{Binding idregion}" />
                <Run Text="{Binding description}" />
            </TextBlock>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

答案 2 :(得分:1)

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