【问题标题】:WPF DataGrid - Add Items if Button was clickedWPF DataGrid - 如果单击按钮,则添加项目
【发布时间】:2023-03-25 12:30:01
【问题描述】:

这是我的代码: 但如果有人点击“Einfügen”按钮,我会添加值(见代码)。

但这不起作用,只会改变他的价值观!

感谢所有帮助者!

        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;
    }
}

【问题讨论】:

    标签: c# wpf button datagrid


    【解决方案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, "---"));
    }
    

    不过,我建议不要走这条路。查看MVVMDataBindingCommands。理想情况下,您希望创建一个ViewModel,其中包含一个绑定到DataGridObservableCollection。在 ViewModel 内部将是一个命令,它将向 ObservableCollection 添加项目。

    【讨论】:

    • 代码不起作用,因为“花语系统的最佳对应。集合。通用。狡猾。添加(计划)方法有一些无效参数。”我感谢这是因为 var 项,并且 itemsEnd 需要更多字符串...
    • @Nick_SMI 太棒了,很高兴我能帮上忙。确保您通过单击复选标记接受答案。 =]
    • 你介意告诉我如何用我的 DataGrid 和这个 _items 的行创建一个“foreach”吗?
    • @Nick_SMI 不确定我是否理解您的问题。一个 foreach 是为了什么?如果您发布一个单独的问题并举例说明您正在尝试做什么,我可以尝试并提供帮助
    • 我想要一个循环,在我的 DataGrid Row 中为每一行做一些事情,你明白吗?如果你不这样做,我可以发布一个单独的问题;)@d.moncada
    猜你喜欢
    • 1970-01-01
    • 2011-11-19
    • 2013-08-08
    • 2011-03-04
    • 2019-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多