Подтвердить что ты не робот

Передайте некоторые параметры между страницами в UWP

Я пытаюсь перенести некоторые проекты Windows Phone 8 на текущий UWP и зацикливаться на этом фрагменте кода, который я использовал в старом проекте.

 private void Restaurant_Tap(object sender, System.Windows.Input.GestureEventArgs e)
    {
        string types = "restaurant";
        string title = "restaurant";
        string url = string.Format("/NearbyPlaces.xaml?latitude={0}&longitude={1}&types={2}&title={3}", LocationLatitude.Text, LocationLangitude.Text, types, title);
        NavigationService.Navigate(new Uri(url, UriKind.Relative));

    }

В этом коде я использовал NavigationService для передачи некоторых параметров на другую страницу. Я больше не мог использовать NaigationService, потому что UWP не поддерживает его. Я попытался использовать это в своем проекте UWP, но я думаю, что он поддерживает только один параметр, CMIIW.

 private void restaurant_tapped(object sender, TappedRoutedEventArgs e)
    {
        string types = "restaurant";
        string title = "restaurant";
        Frame.Navigate(typeof(placeResult), latLoc.Text, longLoc.Text, types, title);
    }

Этот код дает мне ошибку, потому что он принимает 5 аргументов, что составляет +2 перегрузки. Мой вопрос заключается в том, как сделать надлежащим образом передачу некоторых параметров в проекте UWP?

4b9b3361

Ответ 1

То, что вы передали в Windows (Phone) 8, просто было простым string, которое включало все ваши параметры. Вы должны были проанализировать их в методе OnNavigatedTo() целевой страницы. Конечно, вы все равно можете это сделать и передать строку методу Frame.Navigate().

Но поскольку UWP вы можете передавать полные объекты на другие страницы. Итак, почему бы вам не создать небольшой класс, который включает все ваши параметры и передать экземпляр этого?

Ваш класс может выглядеть так:

public class RestaurantParams
{
    public string Name { get; set; }
    public string Text { get; set; }
    // ...
}

И затем передайте его через:

var parameters = new RestaurantParams();
parameters.Name = "Lorem ipsum";
parameters.Text = "Dolor sit amet.";
// ...

Frame.Navigate(typeof(PageTwo), parameters);

На следующей странице вы можете получить к ним доступ через:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);

    var parameters = (RestaurantParams)e.Parameter;

    // parameters.Name
    // parameters.Text
    // ...
}

Где параметр - это функция, которая извлекает аргументы.

Надеюсь, что это поможет.