가변 개수의 열을 가진 DataGrid에 일부 데이터를 바인딩해야합니다. 나는 다음과 같은 코드를 사용하여 작업을했다 :WPF : 동적 열을 사용하여 DataGrid 바인딩을 편집하는 방법은 무엇입니까?
int n = 0;
foreach (string title in TitleList)
{
DataGridTextColumn col = new DataGridTextColumn();
col.Header = title;
Binding binding = new Binding(string.Format("DataList[{0}]", n++));
binding.Mode = BindingMode.TwoWay;
col.Binding = binding;
grid.Columns.Add(col);
}
DataList와 같이 선언
:
public ObservableCollection<double> DataList { get; set; }
및 TitleList과 같이 선언 :
public ObservableCollection<string> TitleList { get; set; }
문제는 내가 지정된에도 불구하고 있다는 것입니다 TwoWay 바인딩은 실제로는 단방향입니다. 편집을 시도 할 셀을 클릭하면 예외가 발생합니다. ''EditItem '이 (가)이 뷰에 허용되지 않습니다.' 나는 바인딩 식에서 뭔가를 놓쳤는가?
P. Deborah "Populating a DataGrid with Dynamic Columns in a Silverlight Application using MVVM"에서 기사를 찾았습니다. 그러나 필자는 필자의 경우 (필자는 헤더 바인딩 작업을 할 수 없음) 작업에 어려움을 겪었습니다. 비록 효과가 있었다고하더라도 일관성없는 셀 스타일과 같은 문제에 여전히 직면 해 있습니다. 그래서 위의 코드를 약간 수정하면 효과가 있는지 궁금합니다.
편집 : 내 문제와 관련된 다른 게시물을 발견 : Implicit Two Way binding.
"Two-way binding requires Path or XPath"와 같은 오류가 발생합니다. 그러나 문제는 쉽게 내 문제는 비슷한 방법으로 해결 될 수 있다면 누군가가 나에게 힌트를 줄 수
<TextBox Text="{Binding Path=DataContext, RelativeSource={RelativeSource Self}}"/>
또는
<TextBox Text="{Binding .}"/>
를 사용하여 고정 할 수 있는가?
내 답을 편집하면 문제가 귀하의 컬렉션 유형의 이중입니다. – blindmeis