将列表框选定项从一个 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 页面发送到另一个页面的主要内容,如果未能解决你的问题,请参考以下文章

将列表框选定的项目发送到不同 uwp 页面上的另一个列表框

将下拉菜单中的选定值发送到另一个页面

如何将选定的单元格发送到另一个视图控制器?

从c#.net中列表框中的多个选定项构建查询

jQuery Mobile:将数据从一个页面发送到另一个页面

WPF - 绑定到用户控件之间的列表框的选定项