2011-12-19 3 views
0

DataGrid에 DataGridComboBoxColumn을 채우고 문자열 목록의 Values ​​값으로 채 웁니다.DataGridComboBoxColumn에 값 목록이 표시되지 않습니다.

XAML 문자열이

<DataGridComboBoxColumn Header="Status" > 
    <DataGridComboBoxColumn.ElementStyle> 
    <Style TargetType="ComboBox"> 
     <Setter Property="ItemsSource" Value="{Binding}" /> 
    </Style> 
    </DataGridComboBoxColumn.ElementStyle> 
</DataGridComboBoxColumn> 

코드처럼 보이는 것은 그리드 데이터는 클래스의 객체의 목록입니다

var lstStrings = new List<string>(); 
lstStrings.Add("New"); 
lstStrings.Add("Open"); 
lstStrings.Add("ReOpen"); 
lstStrings.Add("Closed"); 

DataGridComboBoxColumn cmbx = grdComments.Columns[1] as DataGridComboBoxColumn; 
cmbx.ItemsSource = lstStrings; 

간단한 일반 목록을합니다. 문제는 그리드 데이터 상태 열 값이 기본적으로 공백 (이미 저장된 값을 표시하지 않음)입니다. 내가 셀을 클릭하면 콤보가 값과 함께 표시되지만 값을 선택하면 셀 또한 표시되지 않습니다.

제 설명이 충분히 명확 해 주시기 바랍니다.

+0

이 질문에 대한 대답은 : http://stackoverflow.com/q/8346869/920384 – punker76

+0

해당 예제에는 코드가 없으므로 xaml을 통해서만 점들을 연결할 수 없습니다 – CodeMe

+0

더 많은 코드를 보지 않고도 말하기가 어렵습니다 ,하지만 당신의'MyClass.Status'가 문자열이 아니거나 바인딩이 올바르지 않다고 추측합니다. ComboBox가 DataItem에 바인딩되는 시점은 언제입니까? XAML에서는 어디에서도 볼 수 없습니다. 그리고 당신은 그것을 ItemsSource로 채우고 있습니까? 나는 당신이'ItemsSource'에 대한 바인딩을 가지고 있기 때문에 혼란스럽고 코드 숨김으로 설정하는 것처럼 보입니다. – Rachel

답변

0

데이터 바인딩을 사용하려면 XAML 항목을 클래스의 public 속성에 바인딩해야합니다. 제공하는 코드 예제에서 로컬 변수에 바인딩하려고 시도하는 것으로 보입니다.

ObservableCollection 유형을 사용하고 클래스에 INotifyPropertyChanged 인터페이스를 구현하면 코드에서 이루어진 목록의 변경 사항이 뷰에서 자동으로 업데이트된다는 것이 좋습니다.

+0

한 번만 채워지는 목록에 몇 가지 정적 값에 대한 클래스를 만들 필요가 있습니까? 콤보 값이 콤보에 표시되는 것 외에 선택의 유일한 문제는 – CodeMe