2014-12-22 4 views
0

ComboBox에 3 개의 열을 표시하려고합니다.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> 

을 나는이 정보가 내 콤보 상자에 맞게 만들 수있는 방법 :

나는 프로그램을 실행하는 방법은 다음과 같이 진행하는 시작했다?

답변

0

DisplayMemberPath를 세 번 설정하는 대신 ItemTemplate을 사용할 수 있습니다. 예 :

<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