【问题标题】:Send listbox selecteditems from one wpf page to another将列表框选定项从一个 wpf 页面发送到另一个页面
【发布时间】: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;
    }
}

感谢任何关于我如何做到这一点的指导。

【问题讨论】:

    标签: c# wpf xaml listbox


    【解决方案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 上搜索。

    【讨论】:

      猜你喜欢
      • 2019-05-10
      • 1970-01-01
      • 2013-01-24
      • 2014-11-08
      • 2020-08-16
      • 1970-01-01
      • 2019-05-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多