Я пытаюсь связать два значения со значением отображения ComboBox, но я не знаю, как это сделать.
Этот способ не работает:
cboRegion.DisplayMemberPath = "idregion" + "description";
Кто-нибудь знает, как это сделать на С#?
Я пытаюсь связать два значения со значением отображения ComboBox, но я не знаю, как это сделать.
Этот способ не работает:
cboRegion.DisplayMemberPath = "idregion" + "description";
Кто-нибудь знает, как это сделать на С#?
К сожалению, это невозможно с 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>
Добавить свойство или поле в источник данных. Как это сделать зависит от вашего источника данных:
Если ваше поле со списком привязано к 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>
Вы можете создать представление, объединить два поля, а затем ссылаться на имя связанного поля в свойстве DisplayMemberPath в С# после обращения к новому представлению в свойстве itemssource (и после обновления вашей модели фреймворка)