DisplayMemberPath连接

una*_*dan 20 .net wpf combobox

我试图将两个值绑定到ComboBox显示值,但我不知道该怎么做.

这种方式不起作用:

cboRegion.DisplayMemberPath = "idregion" + "description";
Run Code Online (Sandbox Code Playgroud)

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

Hei*_*nzi 60

不幸的是,这是不可能的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>
    
    Run Code Online (Sandbox Code Playgroud)
  • 向数据源添加属性或字段.如何做到这一点取决于您的数据源:

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

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


Tho*_*que 18

你需要使用DataTemplate:

<ComboBox Name="cboRegion">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock>
                <Run Text="{Binding idregion}" />
                <Run Text="{Binding description}" />
            </TextBlock>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>
Run Code Online (Sandbox Code Playgroud)