2016-07-11 2 views
0

저는 WPF를 처음 사용하고 있으며 데이터 바인딩을 배웠으므로 몇 가지 기본 오류가있을 수 있습니다.데이터 격자 열에 데이터 바인딩

목표 : 문자열 표의 모든 항목을 표시하는 콤보 상자 열과 같이 작동하는 데이터 표의 열을 원합니다.

는 XAML :

<DataGrid x:Name="dataGrid" AutoGenerateColumns="False"> 
    <DataGrid.Columns> 
     <DataGridComboBoxColumn Header="CitiesColumn" ItemsSource="{Binding Cities}/"> 
    </DataGrid.Columns> 
</DataGrid> 

는 코드 숨김 :

objectModel를 유형 :

class CitiesModel 
{ 
    private List<string> _Cities; 
    public List<string> Cities { get { return _Cities; } set { _Cities = value ; } } 
    public CitiesModel() 
    { 
     Cities = new List<string> 
     { 
      "Berlin", 
      "Rome", 
      "Paris", 
      "Barcelona" 
     }; 
    } 
} 

window.cs 파일 :

그것은 전혀 데이터를하지 보여줍니다 그리드의 셀조차도 . 내가 정기적으로 콤보 상자에 동일한 코드를 시도 할 때 그것은 모든 데이터를 보여

XAML : 나는 온라인 검색과 대신의 DataGridTemplateColumn 와 함께 할 수있는 방법을 보았다

<ComboBox ItemsSource="{Binding Cities}"/> 

ComboBox Column, 그리고 이런 식으로 열 헤더를 볼 수 없다.

XAML :

<DataGrid Margin="44,65,52,-24" AutoGenerateColumns="False"> 
    <DataGridTemplateColumn Header="Street Address"> 
     <DataGridTemplateColumn.CellTemplate> 
      <DataTemplate> 
       <ComboBox ItemsSource="{Binding Cities}"/> 
      </DataTemplate> 
     </DataGridTemplateColumn.CellTemplate> 
    </DataGridTemplateColumn> 

감사합니다.

+0

ComboBoxColumn ItemsSource 바인딩에 대한 수십 가지 질문이 중복되었습니다. –

+0

DataGrid의 ItemsSource를 바인딩하지 않았습니다. –

답변

0
  1. DataGridItemsSource을 바인딩하십시오. 그렇지 않으면 항목이 없습니다.
  2. 데이터 그리드 열의 바인딩은 그리드 자체와 다른 DataContext입니다. 즉, 컨텍스트가 현재 행입니다. 따라서 다른 컨텍스트에 바인드하려면 바인딩 소스을 명시 적으로 변경해야합니다.
+0

답을 주셔서 감사합니다. 데이터 격자의 ItemsSource를 바인딩했습니다. 이제는 Cities 속성에 바인딩되지 않은 채 몇 가지 셀을 볼 수 있습니다. 2 포인트를 구현하는 방법에 대한 간단한 예제를 보여줄 수 있습니까? 썼다 고요? –

+0

아니요. MSDN에서 바인딩 문서/개요를 읽거나 stackoverflow를 검색하면 여기에 대한 예가 있습니다. –