我需要將一些數據綁定到具有可變列數的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; }
的問題是,即使我指定雙向綁定,它真的是單向的。當我點擊一個單元格來嘗試編輯時,我得到了一個異常「'EditItem'不允許用於這個視圖」。我是否錯過了約束性表達中的某些東西?
P.S.我從Deborah "Populating a DataGrid with Dynamic Columns in a Silverlight Application using MVVM"找到一篇文章。但是,我很難使其適用於我的情況(具體而言,我無法使標題綁定起作用)。即使它工作,我仍然面臨不一致的單元格樣式的問題。這就是爲什麼我想知道是否可以使我的上面的代碼工作 - 只需稍作調整?
編輯:我發現了另一篇文章,可能與我的問題有關:Implicit Two Way binding。看起來,如果你綁定到字符串列表使用
<TextBox Text="{Binding}"/>
你會得到這樣的錯誤一個TextBox「雙向綁定需要路徑或XPath」。但問題可以很容易地通過使用
<TextBox Text="{Binding Path=DataContext, RelativeSource={RelativeSource Self}}"/>
或
<TextBox Text="{Binding .}"/>
任何人都可以給我一個提示,如果我的問題可以用類似的方式來解決能解決嗎?
我編輯我的答案問題是你的收藏類型的雙。 – blindmeis