Когда вы переходите на отдельную страницу, первая больше не доступна.
Если у вас есть данные, которые вы хотите передать между страницами, вы должны сделать это как часть процесса навигации (в запросестрока).В качестве альтернативы вы должны хранить их в глобально доступном месте, таком как объект App, статический объект или другой объект, который был создан таким образом, чтобы быть доступным для всех необходимых страниц.
Потому чтоSharePage имеет новый экземпляр браузера, свойства, установленные в экземпляре на другой странице, будут недоступны.Это выглядит так:
var browserA = new WebBrowser { InitialUri = "http://stackoverflow.com/" };
var browserB = new WebBrowser();
Если вы попытаетесь запросить InitialUri
из browserB
, это не будет значение из browserA
.
В зависимости от вашего сценария:
a) Пользователь просматривает в веб-браузере на главной странице.
b) Пользователь нажимает кнопку «Поделиться» на главной странице.
c) Приложение переходит на SharePage, чтобы выбрать метод обмена
d) Пользователь выбирает метод совместного использования, и ссылка является общей.
Что нужно сделать на шаге b
, это передать «currentUrl» при выполнении навигации.Что-то вроде:
В MainPage.xaml.cs
:
NavigtionService.Navigate(new Uri("SharePage.xaml?curUrl="
+ HttpUtility.UrlEncode(browser.CurrentlUrl())));
Затем в SharePage.xaml.cs
:
string urlToShare;
protected override void OnNavigatedTo(....)
{
NavigationContext.QueryString.TryGetValue("curUrl", out urlToShare);
}
Затем вы можете использовать urlToShare
в вашем SocialNetworks_Click
и SocialNetworks_Click
методов.
Да, есть другие способы сделать это, но это, вероятно, самый простой, основанный на моем понимании того, что вы пытаетесь сделать.