如何在每个按钮上添加List Generic点击

时间:2017-02-27 22:37:27

标签: c# list xaml object generics

我有一个按钮,可以从控件中获取项目并添加到列表中。 如图所示

这是我掌握价值观的对象。

public class SelectedPurchaseItems
{
    public int ItemId { get; set; }
    public string ItemName { get; set; }
    public double PurchasePrice { get; set; }
    public int Quantity { get; set; }
    public string UnitOfMeasure { get; set; }
    public double Total { get; set; }
}

这是我的主窗口类,它会添加到列表

public partial class MainWindow : Window
{ 
    public List<SelectedPurchaseItems> SelectedList;

    private void btnSaveModalSelectItem_Click(object sender, RoutedEventArgs e)
    {  
            SelectedList = new List<SelectedPurchaseItems>();
            SelectedPurchaseItems _value = new SelectedPurchaseItems()
            {
                ItemId = Convert.ToInt32(comboboxSelectItemItem.SelectedValue),
                ItemName = comboboxSelectItemItem.Text,
                PurchasePrice = _purchasePrice,
                Quantity = _quantity,
                UnitOfMeasure = comboboxSelectItemUnitofMeasure.Text,
                Total = _total
            };
            SelectedList.Add(_value);
            DataGridSelectedPurchaseItems.ItemsSource = SelectedList;
    }
}

我现在的挑战是,每当它向List添加一个项目时,它总是重新初始化列表,这使得前一个项目被添加为清除。 但我的目标是让List保留已添加到其中的每个项目,我不知道如何去做。

我还将列表绑定到WPF数据网格。因此,在显示第一个添加的项目后,它不会显示任何进一步添加的项目。

2 个答案:

答案 0 :(得分:1)

SelectedList = new List<SelectedPurchaseItems>();

是重新初始化列表的行。您应该删除它,并将初始列表初始化移动到构造函数或其他地方

答案 1 :(得分:0)

不要在按钮点击中重新实例化它。只需初始化一次,如下所示:

public partial class MainWindow : Window
{ 
    public List<SelectedPurchaseItems> SelectedList = new List<SelectedPurchaseItems>();
    public MainWindow()
    {
        DataGridSelectedPurchaseItems.ItemsSource = SelectedList;
    }

    private void btnSaveModalSelectItem_Click(object sender, RoutedEventArgs e)
    {  
        SelectedPurchaseItems _value = new SelectedPurchaseItems()
        {
            ItemId = Convert.ToInt32(comboboxSelectItemItem.SelectedValue),
            ItemName = comboboxSelectItemItem.Text,
            PurchasePrice = _purchasePrice,
            Quantity = _quantity,
            UnitOfMeasure = comboboxSelectItemUnitofMeasure.Text,
            Total = _total
        };
        SelectedList.Add(_value);
    }
}