Silverlight 使绑定到数组项的列可编辑
Posted
技术标签:
【中文标题】Silverlight 使绑定到数组项的列可编辑【英文标题】:Silverlight make a column bound to a array item editable 【发布时间】:2017-09-08 12:08:01 【问题描述】:我的 Silverlight 应用程序中有一个DataGrid
,它绑定到一个对象数组。由于列是可变的,我将它们中的每一个绑定到一个数组项:
我的对象:
public class TravelTimeItem
public string From get; set;
public int[] Times get; set;
我用它来构建我的网格:
grdTravelTime.Columns.Clear();
grdTravelTime.Columns.Add(new DataGridTextColumn()
Binding = new Binding("From")
);
for (int i=0; i < amountOfColumns; i++)
grdTravelTime.Columns.Add(new DataGridTextColumn()
Binding = new Binding("Times[" + i.ToString() + "]"),
Header = (i + 1).ToString()
);
grdTravelTime.AutoGenerateColumns = false;
grdTravelTime.IsReadOnly = false;
grdTravelTime.ItemsSource = GetItems();
上面的代码正在运行,我可以看到所有数组值在网格中正确显示,但我需要这些值是可编辑的。绑定到简单字符串属性的“From”列是可编辑的,但绑定到数组项的其他列不可编辑。
如何使这些列可编辑?考虑到每次的列数可能不同,是否还有其他选项可以绑定此列。
【问题讨论】:
【参考方案1】:如何使这些列可编辑?
您需要将int
替换为具有公共设置器属性的自定义类型:
public class TravelTimeItem
public string From get; set;
public YourType[] Times get; set;
public class YourType
public int Value get; set;
...
for (int i = 0; i < amountOfColumns; i++)
grdTravelTime.Columns.Add(new DataGridTextColumn()
Binding = new Binding("Times[" + i.ToString() + "].Value"),
Header = (i + 1).ToString()
);
【讨论】:
以上是关于Silverlight 使绑定到数组项的列可编辑的主要内容,如果未能解决你的问题,请参考以下文章
将 ComboBoxes 绑定到枚举......在 Silverlight 中!