2017-04-12 59 views
0

我在我的Silverlight应用程序中有一个DataGrid,它绑定到一个对象数组。由于该列将是可变的,我必将他们每一个数组项:Silverlight将列绑定到数组项目可编辑

我的目标:

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”列是可编辑的,但绑定到数组项的其他列不是。

如何让这个列可编辑?是否有其他选项可以限制这些列,同时考虑到每列的列数可能会有所不同。

回答

2

如何使这个列可编辑?

你需要有一个属性与公共setter方法的自定义类型,以取代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() 
    }); 
相关问题