我正在尝试将两个值绑定到ComboBox显示值,但我不知道该怎么做。
这种方式不起作用:
cboRegion.DisplayMemberPath = "idregion" + "description";
有谁知道如何在C#中做到这一点?
答案 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属性中的连接字段名称