Я создаю приложение, связанное с GPS, которое отображает координаты среди других вычислений. Мой демонстрационный код настроен на запуск событий каждую секунду.
Всякий раз, когда я обновляю пользовательский интерфейс главной страницы (скажем, текстовое поле с рассчитанной широтой), он работает нормально.
Проблема в том, что если я попытаюсь «перелистнуть» с одной стороны на другую, чтобы изменить страницу. В процессе «пролистывания», если текстовое поле должно было обновиться, оно возвращает главную страницу обратно в поле зрения.
В тексте без видео сложно объяснить. Но представьте себе нажатие и удержание и небольшое перетаскивание панорамного экрана — скажем, чтобы посмотреть на следующую страницу, но еще не листать. Ну, если бы текстовое поле обновлялось в это время, вы бы потеряли удерживание щелчка мыши, и оно вернулось бы на главную страницу.
Как только вы ДЕЙСТВИТЕЛЬНО переходите на следующую страницу, она остается, и я вижу обновление переполнения с предыдущей страницы. Ничего страшного. Но он просто пытается добраться до следующей страницы.
Я новичок в WP7/Silverlight, поэтому я пытался использовать Dispatcher, чтобы сделать вещи более отзывчивыми. Что бы я ни делал (используя Диспетчер или нет), это всегда происходит. Итак, я предполагаю, что это связано с обновлением пользовательского интерфейса.
Небольшой код всегда помогает:
void GeoWatcher_PositionChanged(object sender,
GeoPositionChangedEventArgs<GeoCoordinate> e)
{
Deployment.Current.Dispatcher.BeginInvoke(() => MyPositionChanged(e));
}
void MyPositionChanged(GeoPositionChangedEventArgs<GeoCoordinate> e)
{
var model = GeoProcessor.GetPosition(e.Position);
latitude.Text = model.Latitude;
longitude.Text = model.Longitude;
altitude.Text = model.Altitude;
accuracy.Text = model.Accuracy;
direction.Text = model.Direction;
speed.Text = model.Speed;
speedAvg.Text = model.SpeedAvg;
}
Когда любое из этих текстовых полей обновляется, экран «прыгает» обратно на главную страницу. Какой-то неудачный опыт.
Может это нормально? Есть ли событие, к которому можно подключиться, чтобы узнать, что пользователь пытается «перейти» на следующую страницу?
Заранее спасибо.