Отправить список выбранных элементов с одной страницы wpf на другую - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь выбрать элементы из списка 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 Ответ

0 голосов
/ 07 декабря 2018

Объект, который вы передаете в качестве второго параметра, заканчивается в свойстве ExtraData объекта NavigationEventArgs.

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, а не фрейм, и в нем были бы пользовательские контроли, а не страницы.Я бы использовал шаблоны для создания шаблона модели представления в пользовательском контроле, эквивалентном странице.

Передача списка была бы в конструктор модели представления, к которой я "перемещаюсь".Это стандартная техника wpf, которую вы легко сможете найти в Google.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...