23

2つの値をComboBox表示値にバインドしようとしていますが、その方法がわかりません。

この方法は機能しません:

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

誰かがC#でそれを行う方法を知っていますか?

4

3 に答える 3

72

残念ながら、これは では不可能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 属性の空の中かっこについて疑問がある場合は、バインディング構文の 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

ビューを作成し、2 つのフィールドを連結し、itemssource プロパティで新しいビューを参照した後 (およびエンティティ フレームワーク モデルを更新した後)、c# の DisplayMemberPath プロパティで連結されたフィールド名を参照できます。

于 2014-04-30T21:20:38.127 に答える