在Windows C#之间传递对象

时间:2017-05-11 07:10:46

标签: c# xaml

我已经负责一个项目,我必须使用来创建从文件中消化对象列表的表单,然后才能将列表传递到另一个窗口。

public class Food
{
    public string Name;
    public string Category;
    public int Price;
}

public class Ingredient
{
    public string Name;
    public string Category;
    public decimal PricePerUnit;
    public decimal Quantity;

    public Ingredient(string pName, string pCategory, decimal pPricePerUnit, decimal pQuantity)
    {
        Name = pName;
        Category = pCategory;
        PricePerUnit = pPricePerUnit;
        Quantity = pQuantity;
    }
}

/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        List<Ingredient> Inventory = CallInventoryFile();
    }



    private void inventoryButton_Click(object sender, RoutedEventArgs e)
    {
        InventoryWindow wnd = new InventoryWindow();
        wnd.ShowDialog();
    }

    public List<Ingredient> CallInventoryFile()
    {

        List<Ingredient> ProcessedInventory = new List<Ingredient>();

        try
        {
            string[] fileLines = File.ReadAllLines("Inventory.txt");


            //Reading in the file
            for (int i = 0; i < fileLines.Length; i++)
            {
                string[] CurrentLine = fileLines[i].Split(',');
                string Name = CurrentLine[0].Trim();
                string Category = CurrentLine[1].Trim();
                decimal PricePerUnit = decimal.Parse(CurrentLine[2].Trim());
                decimal Quantity = decimal.Parse(CurrentLine[3].Trim());
                Ingredient IngredientToAdd = new Ingredient(Name, Category, PricePerUnit, Quantity);
                ProcessedInventory.Add(IngredientToAdd);
            }
            return ProcessedInventory;
        }
        catch
        {
            //if we get here read in failed
            MessageBox.Show("There was an error reading in the file");
            return ProcessedInventory;
        }
    }

然后我必须移动到这个窗口

    public InventoryWindow()
    {
        InitializeComponent();

        categoryComboBox.Items.Add("All");
        categoryComboBox.Items.Add("Pizza");
        categoryComboBox.Items.Add("Burger");
        categoryComboBox.Items.Add("Sundry");
        categoryComboBox.SelectedValue = "All";
    }

    private void listBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {

    }

    private void categoryComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {

    }
}

}

我的问题是如何将Inventory的结果从MainWindow传递给InventoryWindow

1 个答案:

答案 0 :(得分:5)

你可以在构造函数中传递,

  InventoryWindow wnd = new InventoryWindow(Inventory);
  wnd.ShowDialog();

然后,

public InventoryWindow(List<Ingredient> inputList)
{
}
相关问题