Gajinov
Gajinov

Reputation: 23

Show multiple columns from database in one combobox

I want to show in one combobox content from two database columns. I would like to show "Name Surname" but I don't know how. I'm working in C# (.NET) using MVVM pattern. "Name" and "Surname" are fields from table "tblGuests".

Thanks in advance, Vladimir

Upvotes: 0

Views: 581

Answers (3)

Emond
Emond

Reputation: 50672

You could create an ItemTemplate for the ComboBox that binds to all the properties you want to show.

<ComboBox ItemsSource="{Binding}">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <StackPanel  Orientation="Horizontal">
                <TextBlock Text="{Binding Path=FirstName}" Padding="10,0,0,0"/>
                <TextBlock Text="{Binding Path=LastName}" Padding="10,0,0,0"/>
            </StackPanel>
        <DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

You could even create a UserControl that can be re-used and use that:

<PersonView>
    <StackPanel  Orientation="Horizontal">
        <TextBlock Text="{Binding Path=FirstName}" Padding="10,0,0,0"/>
        <TextBlock Text="{Binding Path=LastName}" Padding="10,0,0,0"/>
    </StackPanel>
</PersonView>

<ComboBox ItemsSource="{Binding}">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <PersonView/>
        <DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

Upvotes: 3

Jatin
Jatin

Reputation: 4063

Another option could be to use MultiBinding something like this

<TextBlock Name="textBox2" DataContext="{StaticResource NameListData}">
  <TextBlock.Text>
    <MultiBinding Converter="{StaticResource myNameConverter}"
                  ConverterParameter="FormatLastFirst">
      <Binding Path="FirstName"/>
      <Binding Path="LastName"/>
    </MultiBinding>
  </TextBlock.Text>
</TextBlock>

This code was taken directly from msdn. Refer to it for more details

Upvotes: 1

Madurika Welivita
Madurika Welivita

Reputation: 900

Keep a string list property in Viewmodel,

populate that property in a data loading method, by combining name and surname strings,

bind string property to combo box,

<ComboBox Name="ComboBox1" ItemsSource="{Binding YourStringListProperty}"/>

Upvotes: 1

Related Questions