Я делаю приложение для погоды в Windows Phone 8. Я использую геолокацию для получения координат и использования reverseCoordinates, чтобы получить название города, которое позже я намерен использовать для своего URL-адреса, который я использую для получения моих метеорологических данных.
Это код для моего reverseCoordinates, и он находится на моей главной странице.xaml.cs
public static string City;
public void reverseGeocode_QueryCompleted(object sender, QueryCompletedEventArgs<IList<MapLocation>> e)
{
MapAddress geoAddress = e.Result[0].Information.Address;
City = geoAddress.City;
txtStad.Text = City;
}
В моем MainViewModel (где мне нужно включить мой город), код, который я использую,
string City = WeatherApp1.MainPage.City;
Теперь проблема в том, что когда я отлаживаю, я вижу, что интерпретатор сначала использует мою mainviewmodel, но затем, когда я использую свой код, у City было значение null, потому что оно еще не было сделано на Mainpage.xaml.cs. Есть ли что-нибудь, что я могу сделать, чтобы исправить это?
Вы должны убедиться, что, когда метод, который использует значение City, выполняется только тогда, когда он имеет значение. Другим решением было бы определить значение по умолчанию. Вы можете использовать оператора:
string City = WeatherApp1.MainPage.City ?? "London";
Как это работает? Когда WeatherApp1.MainPage.City имеет значение null, то? поставит Сити в Лондон.
Также ознакомьтесь с этой статьей о том, как передавать значения между страницами: http://www.geekchamp.com/tips/how-to-pass-data-between-pages-in-windows-phone-alternatives
Что вам нужно сделать, так это открыть WMAppManifest.xml
и изменить значение навигационной страницы на WMAppManifest.xml
вам страницу. например. Page1.xaml