我正在尝试将两个值绑定到 ComboBox 显示值,但我不知道该怎么做。
这种方式行不通:
cboRegion.DisplayMemberPath = "idregion" + "description";
有谁知道如何在 C# 中做到这一点?
不幸的是,这是不可能的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 或实体框架对象,请添加一个返回串联的属性。
您需要使用DataTemplate
:
<ComboBox Name="cboRegion">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock>
<Run Text="{Binding idregion}" />
<Run Text="{Binding description}" />
</TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
您可以创建一个视图,连接两个字段,然后在您的 itemssource 属性中引用新视图之后(并在更新您的实体框架模型之后),然后在 c# 中的 DisplayMemberPath 属性中引用连接的字段名称