2017-04-12 4 views
0

Ich habe eine DataGrid in meiner Silverlight-Anwendung, die an ein Array von Objekten gebunden ist. Da die Spalten variabel sein wird, gebunden ich jeden von ihnen zu einem Array Artikel:Silverlight machen eine Spalte an ein Array Element bearbeitbar

Mein Objekt:

public class TravelTimeItem 
{   
    public string From { get; set; } 
    public int[] Times { get; set; } 
} 

Ich baue mein Gitter mit, dass:

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

oben Der Code funktioniert , Ich kann alle Array-Werte korrekt im Raster angezeigt sehen, aber ich muss die Werte editierbar sein. Die Spalte "Von", die an eine einfache STRing-Eigenschaft gebunden ist, kann bearbeitet werden, die anderen, die an ein Array-Element gebunden sind, jedoch nicht.

Wie kann ich diese Spalten editierbar machen? Gibt es eine andere Option, um diese Spalten zu binden, unter Berücksichtigung der Anzahl der Spalten kann jedes Mal anders sein.

Antwort

2

Wie kann ich diese Spalten editierbar machen?

Sie benötigen int mit einem benutzerdefinierten Typ zu ersetzen, die eine Eigenschaft mit einem öffentlichen Setter hat:

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() 
    }); 
Verwandte Themen