WPF DataGrid - 添加项目,如果按钮被点击
问题描述:
这是我的代码: 但是,如果有人点击按钮“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;
}
}
答
的问题是,你是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
,DataBinding
和Commands
。理想情况下,您希望创建一个ViewModel
,其中包含与DataGrid
绑定的ObservableCollection
。在ViewModel
里面会有一个命令将这个项目添加到ObservableCollection
。
该代码不起作用,因为“对于华丽系统的最佳对应。集合。泛型。狡猾。添加(计划)方法有一些无效的参数。”我感谢那是因为var item和itemsEnd需要更多字符串... –
我更新了我的代码顶部^^ –
@Nick_SMI请参阅更新 –