C#UWP将数据从一个ListView传递到数组下一页的第二个Listview

时间:2018-04-05 21:55:35

标签: c# uwp

当用户点击主页面列表视图中的一个或多个项目时,我需要获取数据并将其传递给第二个数组,该数组将转到下一页的结帐。我无法弄清楚如何从1传递数据listview到页面之间的另一个列表视图。

    public struct DATA
    {
        public DATA(string distinguisher, double price, string description)
        {
            Distinguisher = distinguisher;
            Price = price;
            Description = description;
        }

        public string Distinguisher { get; }
        public double Price { get; }
        public string Description { get; }
    }

    public MainPage()
    {
        InitializeComponent();
    }

    public void btnBreakfast_Click(object sender)
    {
        //20 Elements for the Array
        DATA[] myData = new DATA[20]
        {
            new DATA("Breakfast", 4.00 ,  "Gourment Pancakes"),
            new DATA("Breakfast", 6.00 ,  "Eggs & Toast"),
            new DATA("Breakfast", 7.50 ,  "Oatmeal with OJ"),
            new DATA("Breakfast", 10.75 ,  "Fresh Waffles"),
            new DATA("Breakfast", 11.00 ,  "Bacon Egg & Cheese"),
            new DATA("Breakfast", 4.00 ,  "Bagel & Cream Cheese"),
            new DATA("Breakfast", 4.00 ,  "Butter Potatoes with Toast"),
            new DATA("Lunch", 9.50 ,  "Tuna Fish"),
            new DATA("Lunch", 8.00 ,  "Ham & Cheese"),
            new DATA("Lunch", 14.00 ,  "Buffalo Chicken Wrap"),
            new DATA("Lunch", 13.00 ,  "Cheeseburger with Fries"),
            new DATA("Lunch", 6.00 ,  " Jumbo Cheese Pizza"),
            new DATA("Lunch", 9.00,   "Hotdog with Fries"),
            new DATA("Lunch", 9.00,   "Philly Cheese Stake"),
            new DATA("Dinner", 22.00,   "Salmon with Two Sides"),
            new DATA("Dinner", 24.00,   "Steak with Two Sides"),
            new DATA("Dinner", 17.00,   "Chicken Parm Dinner"),
            new DATA("Dinner", 25.00,   "Extra Large Lasagna"),
            new DATA("Dinner", 15.00,   "Stuffed Shells"),
            new DATA("Dinner", 16.00,   "Penne Ala Vodka"),
        };

        for (int i = 0; i < myData.Length; i++)
        {
            if (myData[i].Distinguisher == "Breakfast")
            {
                HomePageListBox.Items.Add(myData[i].Description);
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

我不太清楚你想要的真正效果是什么,但原则应该是一样的。这是一个完整的例子。

在MainPage.xaml中,有一个ListView

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Button Content="Select" Click="btnBreakfast_Click"/>
    <ListView Grid.Row="1" Name="MainPageListView" ItemsSource="{Binding myData}" 
              SelectionMode="Multiple" SelectionChanged="MainPageListView_SelectionChanged">
        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding Distinguisher}" Margin="5"/>
                    <TextBlock Text="{Binding Price}" Margin="5"/>
                    <TextBlock Text="{Binding description}" Margin="5"/>
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</Grid>

数据模型背后的MainPage.xaml.cs代码,

public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();

        myData = new DATA[20]{
        new DATA("Breakfast", 4.00 ,  "Gourment Pancakes"),
        new DATA("Breakfast", 6.00 ,  "Eggs & Toast"),
        new DATA("Breakfast", 7.50 ,  "Oatmeal with OJ"),
        new DATA("Breakfast", 10.75 ,  "Fresh Waffles"),
        new DATA("Breakfast", 11.00 ,  "Bacon Egg & Cheese"),
        new DATA("Breakfast", 4.00 ,  "Bagel & Cream Cheese"),
        new DATA("Breakfast", 4.00 ,  "Butter Potatoes with Toast"),

        new DATA("Lunch", 9.50 ,  "Tuna Fish"),
        new DATA("Lunch", 8.00 ,  "Ham & Cheese"),
        new DATA("Lunch", 14.00 ,  "Buffalo Chicken Wrap"),
        new DATA("Lunch", 13.00 ,  "Cheeseburger with Fries"),
        new DATA("Lunch", 6.00 ,  " Jumbo Cheese Pizza"),
        new DATA("Lunch", 9.00,   "Hotdog with Fries"),
        new DATA("Lunch", 9.00,   "Philly Cheese Stake"),

        new DATA("Dinner", 22.00,   "Salmon with Two Sides"),
        new DATA("Dinner", 24.00,   "Steak with Two Sides"),
        new DATA("Dinner", 17.00,   "Chicken Parm Dinner"),
        new DATA("Dinner", 25.00,   "Extra Large Lasagna"),
        new DATA("Dinner", 15.00,   "Stuffed Shells"),
        new DATA("Dinner", 16.00,   "Penne Ala Vodka"),  };
        this.DataContext = this;
        passData = new List<DATA>();
    }

    public DATA[] myData { get; set; }


    public List<DATA> passData { get; set; }

    public void btnBreakfast_Click(object sender, RoutedEventArgs e)
    {
        //You can have a filter here to filter the data you want to pass to the new page.
        for (int i = 0; i < passData.Count; i++)
        {
            if (myData[i].Distinguisher == "Breakfast")
            {
                // HomePageListBox.Items.Add(myData[i].description);
            }
        }

        Frame.Navigate(typeof(NewPage), passData);

    }

    private void MainPageListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        ListView list = sender as ListView;
        DATA selected = (DATA)list.SelectedItem;
        passData.Add(selected);
    }
}

public struct DATA
{
    public double Price { get; set; }
    public string description { get; set; }

    public string Distinguisher { get; set; }

    public DATA(string Distinguisher, double Price, string description)
    {
        this.Distinguisher = Distinguisher;
        this.Price = Price;
        this.description = description;

    }
}

选择项目后,单击按钮,btnBreakfast_Click事件触发器导航到包含项目数据的NewPage,然后您可以使用NewPage的OnNavigatedTo方法获取数据并在NewPage中显示数据,

public NewPage()
{
    this.InitializeComponent();
}

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    //You can get data here, then you can display they in the xaml
   var data= e.Parameter as List<DATA>;
}