WPF ComboBox несколько столбцов из базы данных

Я хочу отобразить три столбца в ComboBox.

Вот мое решение, но, к сожалению, оно не работает.

У меня есть метод, который запускается при запуске программы, который выглядит следующим образом:

SqlDataAdapter da = new SqlDataAdapter("Select neve, kialakitas,befogado_kepesseg from helyszin", c1);
        DataSet ds = new DataSet();
        da.Fill(ds, "hely");
        cbHelyszin.ItemsSource = ds.Tables["hely"].DefaultView;
        cbHelyszin.DisplayMemberPath = ds.Tables["hely"].Columns["neve"].ToString();
        cbHelyszin.DisplayMemberPath = ds.Tables["hely"].Columns["kialakitas"].ToString();
        cbHelyszin.DisplayMemberPath = ds.Tables["hely"].Columns["befogado_kepesseg"].ToString();
        cbHelyszin.SelectedValuePath = ds.Tables["hely"].Columns["neve"].ToString();

XAML

<ComboBox.ItemContainerStyle>
                <Style TargetType="{x:Type ComboBoxItem}">
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate>
                                <Grid x:Name="gd" TextElement.Foreground="Black">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition/>
                                        <ColumnDefinition/>
                                        <ColumnDefinition/>
                                    </Grid.ColumnDefinitions>
                                    <TextBlock Margin="5" Grid.Column="0" Text="{Binding }"/>
                                    <TextBlock Margin="5" Grid.Column="1" Text="{Binding }"/>
                                    <TextBlock Margin="5" Grid.Column="2" Text="{Binding }"/>
                                </Grid>
                                <ControlTemplate.Triggers>
                                    <Trigger Property="ComboBoxItem.IsSelected" Value="True">
                                        <Setter TargetName="gd"  Property="Background" Value="Gray"></Setter>
                                        <Setter TargetName="gd"  Property="TextElement.Foreground" Value="White"></Setter>
                                    </Trigger>
                                    <Trigger Property="ComboBoxItem.IsMouseOver" Value="True">
                                        <Setter TargetName="gd"  Property="Background" Value="Blue"></Setter>
                                        <Setter TargetName="gd"  Property="TextElement.Foreground" Value="White"></Setter>
                                    </Trigger>                                       
                                </ControlTemplate.Triggers>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </ComboBox.ItemContainerStyle>
        </ComboBox>

Как я могу сделать эту информацию подходящей для моего ComboBox?

1 ответ

Решение

Ты можешь использовать ItemTemplate вместо того, чтобы пытаться установить DisplayMemberPath три раза. Например:

<ComboBox.ItemTemplate>
    <DataTemplate>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>
            <TextBlock Text="{Binding neve}" />
            <TextBlock Grid.Column="1" Text="{Binding kialakitas}" />
            <TextBlock Grid.Column="2" Text="{Binding befogado_kepesseg}" />
        </Grid>
    </DataTemplate>
</ComboBox.ItemTemplate>
Другие вопросы по тегам