我正在尝试从主页上的列表框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;
}
}
任何有关我如何执行此操作的指导都值得赞赏。
答案 0 :(得分:0)
作为第二个参数传递的对象最终出现在NavigationEventArgs的ExtraData属性中。
private void btnAdd_Click(object sender, RoutedEventArgs e)
{
var tmp = lstNames.SelectedItems.ToList();
Frame.Navigate(typeof(Page2), tmp);
}
我在这里使用Linq作为ToList()。
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
lstNames2.ItemsSource = e.ExtraData as List<Name>;
}
我还是建议您看一下MVVM。 我这样做的方法是首先称为viewmodel的方法。 我将使用contentcontrol而不是框架,并在其中使用usercontrol而不是页面。 我会使用模板将视图模型模板化成与页面等效的用户控件。
将列表传递到我“导航”到的视图模型的构造函数中。 这是一种标准的wpf技术,您应该可以轻松地使用Google。