2016-12-02 2 views
0

WPF 데이터 격자를 탭으로 구분 된 텍스트 파일에서 읽은 알 수없는 문자열에 바인딩하는 방법을 찾으려고합니다. 나는 뒤에 코드에서의 데이터 컨텍스트를 설정 뷰를 가지고 있고, 난 그냥이 같은 생성자 코드에서 데이터 그리드를 설정하는 것이라고 생각 : 뷰 모델은 내가하려는 ObservableCollection에의 lParam의에있다C# WPF ObagtableCollection 멤버에 바인딩 된 Datagrid

public MainWindow(FileParametersViewModel vm) 
{ 
    InitializeComponent(); 
    DataContext = vm; 
    dataGrid.ItemsSource = vm.lParams; 
    for (int i = 0; i < vm.ParamNames.Count(); i++) 
    { 
     DataGridTextColumn col = new DataGridTextColumn(); 
     col.Binding = vm.lParams.pArray[i]; 
     col.Header = vm.ParamNames[i]; 
     dataGrid.Columns.Add(col); 
    } 
} 

나는 전자의 목록을 채울

public class FileSheetParameters 
{ 
    public FileSheetParameters() 
    { 
     SheetExists = false; 
     IsPlaceholder = false; 
     pArray = null; 
    } 

    public bool SheetExists { get; set; } 
    public bool IsPlaceholder { get; set; } 
    public List<string> pArray { get; set; } 
} 

:

private ObservableCollection<FileSheetParameters> _lParams; 
public ObservableCollection<FileSheetParameters> lParams 
{ 
    get { return _lParams; } 
    set 
    { 
     if (value != _lParams) 
     { 
      _lParams = value; 
      NotifyPropertyChanged("lParams"); 
     } 
    } 
} 

각 열은 FileSheetParameters 내 목록의 구성원 (pArray)에 바인딩됩니다에 데이터 그리드를 바인딩 내가 읽었을 때 텍스트 파일의 ach 행

내 문제는 내가 첫 번째 코드 블록에서와 같이 실제로 lParams.pArray를 참조 할 수 없다는 것입니다. "ObservableCollection에 'pArray'에 대한 정의가 포함되어 있지 않은데 컴파일 타임 오류가 발생합니다. (그리고 빨간색으로 구불 구불 한 것입니다.)하지만 pArray는 컬렉션에있는 클래스의 멤버입니다. ?

방금 ​​데이터 그리드의 항목 소스를 설정하고 열 특정 바인딩을 수행하지 않으면 pArray라는 제목의 마지막 열이있는 빈 그리드가 표시되고 각 셀에는 "(컬렉션)"이 표시됩니다. .. 내가 대신 ObservableCollection에의 DataTable을 사용했지만, 그 행동은 내가 좋아하는 것이 아니다 이것은 밤새 나를 도청

답변

0

, 난 그냥 해결책을 발견.

뒤에 코드에서 바인딩 명령 리를 봐야 해. 이 경우 :

string path = String.Format("pArray[{0}]", i); 
    col.Binding = new Binding(path); 

그리고 나서 DataGrid가 올바르게 채워집니다.