2015-12-21 107 views
0

這是我的代碼: 但是,如果有人點擊按鈕「Einfügen」,我會添加值(見代碼)。WPF DataGrid - 添加項目,如果按鈕被點擊

但它不起作用,它只會改變他的價值!

感謝所有幫手!

 private void Einfügen_Click(object sender, RoutedEventArgs e) 
    { 
     var itemsEnd = new List<Plan>(); 
     itemsEnd.Add(new Plan(LinieZ, Convert.ToString(Kurs.SelectedItem), AbfZ, VonZ, NachZ, AnkZ, "---")); 
     Plan.ItemsSource = itemsEnd; 
    } 

    class Plan 
{ 
    public string Linie { get; set; } 
    public string Kurs { get; set; } 
    public string Abfahrt { get; set; } 
    public string Von { get; set; } 
    public string Nach { get; set; } 
    public string Ankunft { get; set; } 
    public string Pause { get; set; } 

    public Plan(string Linie, string Kurs, string Abfahrt, string Von, string Nach, string Ankunft, string Pause) 
    { 
     this.Linie = Linie; 
     this.Kurs = Kurs; 
     this.Abfahrt = Abfahrt; 
     this.Von = Von; 
     this.Nach = Nach; 
     this.Ankunft = Ankunft; 
     this.Pause = Pause; 
    } 
} 

回答

1

的問題是,你是resetting每次ItemsSource到一個全新的List(尺寸1)。您不添加到List,而是創建僅包含新項目的List,然後將List設置爲DataGrid

您可以添加一個預定義的列表。

喜歡的東西:

private ObservableCollection<Plan> _items = new ObservableCollection<Plan>(); 

public Window() 
{ 
    InitializeComponent(); 
    Plan.ItemsSource = _items; 
} 

private void Einfügen_Click(object sender, RoutedEventArgs e) 
{ 
    _items.Add(new Plan(LinieZ, Convert.ToString(Kurs.SelectedItem), AbfZ, VonZ, NachZ, AnkZ, "---")); 
} 

雖然,我會建議不會走這條路。看看MVVM,DataBindingCommands。理想情況下,您希望創建一個ViewModel,其中包含與DataGrid綁定的ObservableCollection。在ViewModel裏面會有一個命令將這個項目添加到ObservableCollection

+0

該代碼不起作用,因爲「對於華麗系統的最佳對應。集合。泛型。狡猾。添加(計劃)方法有一些無效的參數。」我感謝那是因爲var item和itemsEnd需要更多字符串... –

+0

我更新了我的代碼頂部^^ –

+0

@Nick_SMI請參閱更新 –