2015-12-21 74 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请参阅更新 –