Silverlight使列绑定到可编辑的数组项

时间:2017-04-12 15:44:39

标签: c# wpf silverlight

我的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();  

上面的代码正常工作,我可以看到所有数组值在网格中正确显示,但我需要值可编辑。绑定到简单STring属性的“From”列是可编辑的,但绑定到数组项的其他列不是。

如何使此列可编辑?是否有其他选项来绑定此列,考虑到每次列的数量可能不同。

1 个答案:

答案 0 :(得分:2)

  

如何使此列可编辑?

您需要将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()
    });