将列表框选定项从一个 wpf 页面发送到另一个页面
Posted
技术标签:
【中文标题】将列表框选定项从一个 wpf 页面发送到另一个页面【英文标题】:Send listbox selecteditems from one wpf page to another 【发布时间】:2019-05-09 15:12:01 【问题描述】:我正在尝试从主页上的列表框 1 中选择项目,单击名为添加的按钮并将项目发送到新页面。但我不认为我这样做的方法是正确的。
MainPage.xaml.cs
private void btnAdd_Click(object sender, RoutedEventArgs e)
List<Names> tmp = new List<Names>();
foreach(var names in lstNames.SelectedItems)
tmp.Add(names);
lstNames.ItemsSource = tmp;
Frame.Navigate(typeof(Page2), tmp);
Page2.xaml.cs
protected override void OnNavigatedTo(NavigationEventArgs e)
base.OnNavigatedTo(e);
var tmp = (Names)e.Parameter;
lstNames2.ItemsSource = tmp;
感谢任何关于我如何做到这一点的指导。
【问题讨论】:
【参考方案1】:作为第二个参数传递的对象最终出现在 NavigationEventArgs 的 ExtraData 属性中。
private void btnAdd_Click(object sender, RoutedEventArgs e)
var tmp = lstNames.SelectedItems.ToList();
Frame.Navigate(typeof(Page2), tmp);
我在那里为 ToList() 使用 Linq。
protected override void OnNavigatedTo(NavigationEventArgs e)
base.OnNavigatedTo(e);
lstNames2.ItemsSource = e.ExtraData as List<Name>;
不过,我建议您查看 MVVM。 我这样做的方法是首先称为 viewmodel 的方法。 我会使用内容控件而不是框架,并且其中包含用户控件而不是页面。 我会使用模板将视图模型模板化为页面等效的用户控件。
传递列表将进入我“导航”到的视图模型的构造函数。 这是一种标准的 wpf 技术,您应该可以轻松地在 Google 上搜索。
【讨论】:
以上是关于将列表框选定项从一个 wpf 页面发送到另一个页面的主要内容,如果未能解决你的问题,请参考以下文章