2017-04-12 22 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() 
    }); 
相關問題