上下文:我在UWP中创建一个程序,其菜单包含一个具有3个不同参数或属性的对象数组。菜单从列表视图中订购食物。我创建了一个添加按钮,可以将selecteditem添加到全局数组中,以便我可以将它传输到另一个页面。我遇到的问题是我创建了一个for循环来为添加项目按钮添加项目,它只是在下一页上吐出我选择的最后一项20次。我是相当新手和学习所以请原谅我,如果我使用非常落后的方法来获得我的结果,但我只是想着这一切,因为我继续。无论如何这里是循环的代码,也许很明显我只需要一组新的眼睛。
private void AddItemButton_Click(object sender, RoutedEventArgs e)
{
for (int i =0;i<20;i++)
{
GlobalVars.GlobalStringArray[i] = (ListView.SelectedItem.ToString());
}
}
还有一点内容,下一页是继承人。
protected override void OnNavigatedTo(NavigationEventArgs e)
{
for (int i = 0; i < 20; i++)
{
ListResultView.Items.Add(GlobalVars.GlobalStringArray[i]);
}
}
示例数据来自加载到列表视图中以供选择的数组
MenuItem[] newItems = new MenuItem[20];
newItems[0] = new MenuItem("Breakfast", "Bacon and Eggs", 5.00);
newItems[1] = new MenuItem("Breakfast", "Pancakes", 4.25);
答案 0 :(得分:0)
如果要在ListView中获取所有选定的项目并将其保存到全局变量中,则无需添加特定按钮即可完成此操作。
ListView控件具有IsMultiSelectCheckBoxEnabled
和SelectionMode
以启用多选。之后,您可以注册SelectionChanged
事件以获取所有选定的项目,如下所示:
<ListView IsMultiSelectCheckBoxEnabled="True" SelectionMode="Multiple" SelectionChanged="ListView_SelectionChanged">
<ListViewItem>item1</ListViewItem>
<ListViewItem>item2</ListViewItem>
<ListViewItem>item3</ListViewItem>
</ListView>
List<string> ls = new List<string>();
private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
foreach (var item in e.AddedItems)
{
ls.Add((item as ListViewItem).Content.ToString());
}
foreach (var _item in e.RemovedItems)
{
ls.Remove((_item as ListViewItem).Content.ToString());
}
}
然后,如果您导航到其他页面,则可以将此列表作为参数传递。
Frame.Navigate(typeof(BlankPage1),ls);
您可以在其他页面上获取此列表:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
if (e.Parameter != null)
{
List<string> ls = e.Parameter as List<string>;
foreach (var item in ls)
{
Debug.WriteLine(item);
}
}
}
这只是一个简单的代码示例供您参考,在您的情况下,您需要自己进行更改。