2014-12-22 2 views
0

Я хочу отобразить три столбца в ComboBox.WPF 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?

ответ

0

Вы можете использовать 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> 
+0

Вы не можете одновременно настраивать элемент DisplayMemberPath и ItemTemplate. это сообщение об ошибке – user3793233

+0

@ user3793233 не задает DisplayMemberPath, нет необходимости – McGarnagle

Смежные вопросы