Xamarin FOrms маршрутизация с передачей параметров в Shell - PullRequest
0 голосов
/ 17 марта 2020

В моем codeBehind моей страницы Page 1 у меня есть:

        {
            //do not select item
            ((ListView)sender).SelectedItem = null;

            //go to stockDetailsPage
            await Shell.Current.GoToAsync("postlogin/stockdetails?tickerSymbol=AAPL.NASDAQ");
        }

Как вы можете видеть, я жестко закодировал значение, чтобы проверить его.

Раньше это было без параметра, и это работало Теперь мне нужно передать param tickerSymbol. И в моем stockDetailsPage в моей ViewModel я добавил

[QueryProperty("TickerSymbol", "tickerSymbol")] над моим классом

и в моем классе я объявил свойства:

        public string TickerSymbol
        {
            set { SetProperty(ref tickerSymbol, Uri.UnescapeDataString(value)); }
            get { return tickerSymbol; }
        }

Так что в моем конструкторе этого vm, теперь я хочу вызвать метод с входным аргументом этого параметра, но я все время получаю null.

Можете ли вы подсказать, где я не прав?

1 Ответ

0 голосов
/ 18 марта 2020

Как сказал Xamarin do c, он должен иметь возможность передавать param классу для BindingContext страницы, я попробовал следующее, и это работает:

в коде позади, set BindingContext для вашей ViewModel:

TestParamViewModel testParamViewModel;
public TestPage()
{
   InitializeComponent();
   testParamViewModel = new TestParamViewModel();
   this.BindingContext = testParamViewModel;
}

Добавьте QueryPropertyAttribute для вашей ViewModel:

[QueryProperty("Name", "name")]
class TestParamViewModel
{
    string name;
    public string Name
    {
        set
        {
            name = Uri.UnescapeDataString(value);
        }
    }
}

навигация по вызову:

await Shell.Current.GoToAsync("testpage?name=Abyssinian");

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

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