2016-12-02 74 views
0

我試圖找到一個WPF DataGrid綁定到一個未知的數字,我從一個製表符分隔文本文件中讀取字符串的方法。我有我設置的DataContext在後面的代碼視圖,和我計算過,我只想建立數據網格在構造函數代碼:C#WPF的Datagrid綁定到的ObservableCollection成員

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); 
    } 
} 

視圖模型有我想要一個ObservableCollection lParams到結合數據網格到:

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

每一列將被綁定到FileSheetParameters內​​的列表中的一員(粒子陣列):

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; } 
} 

我填充從E列表正如我在閱讀文本文件的ACH線。

我的問題是,我不能實際引用lParams.pArray正如我在第一個代碼塊做。我得到一個編譯時錯誤(和紅色波浪也行)。「的ObservableCollection不包含定義爲‘粒子陣列’,但粒子陣列是類的東西,都在收集。的成員。我在做什麼錯?

如果我只是設置數據網格的Items源,並且不執行任何列特定綁定,那麼我會得到一個空網格,最後一列標題爲pArray,每個單元格顯示「(Collection)」。 。我已經使用了一個DataTable的,而不是一個ObservableCollection,但這種行爲是不是我喜歡

回答

0

這一個竊聽我一整夜,我只是找到了解決辦法:

代碼綁定命令背後應該看看李ke這:

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

然後datagrid填充正確。

相關問題