Проект WP 7.1 начинается со страницы, на которой размещен элемент управления Panorama.В какой-то момент пользователь нажимает на ListBox, и это перемещает приложение на страницу сведений.
В случае, если отладчик подключен, все остается на экране, как и должно быть.Но если я тестирую приложение либо в эмуляторе, либо на телефоне без отладчика, примерно через 5-10 секунд после навигации по странице сведений, приложение деактивируется.
Без исключений, не закрывающихся, но деактивированныхдаже поднят.Я поместил окна сообщений в каждом из «обработчиков выхода», чтобы точно знать, что происходит, и обнаружил, что это деактивация.
Никакого пользовательского ввода не происходит после навигации и до деактивации.
В чем может быть причина такой дезактивации «без взаимодействия»?
Я не вызываю никаких «деактивирующих» запросов из кода.
Дополнительная информация: Страница сведений привязана к образцу модели представления, получаемой с помощью MVVM Light ViewModelлокатор.Локатор модели представления получает его из недействительного ядра, которое является статическим общедоступным свойством объекта App ( Да, я сделал контейнер IOC общедоступным через свойство App. Я знаю, что это, вероятно, ужасная практика, но я сомневаюсь, что проблема заключается в том, чтосвязано с этим ).Страница инициализируется очень хорошо и отображает все данные из класса модели типового представления.Похоже, приложение деактивируется из-за неактивности, но в WP7, насколько я знаю, такого нет.
ОБНОВЛЕНИЕ
Деактивация происходит ровно через 10 секунд после того, как я называю эту строку:
((PhoneApplicationFrame)(Application.Current.RootVisual)).Navigate(new Uri("/Views/BookDetailsView.xaml", UriKind.Relative));
из модели представления основного представления приложения,Проблемное представление - это подробное представление, а не основное.
Конструктор для BookDetailsView пуст (по умолчанию):
public partial class BookDetailsView : UserControl
{
public BookDetailsView()
{
InitializeComponent();
}
}
XAML для представления связывает его datacontext со свойствомлокатор модели легкого представления mvvm:
DataContext="{Binding Source={StaticResource Locator}, Path=BookDetails}"
Ресурс Locator
объявлен в App.xaml и указывает на ViewModelLocator.cs.
Свойство, предоставляющее datacontext для проблемного представления,:
public static IBookDetailsViewModel BookDetailsStatic
{
get;
set;
}
/// <summary>
/// Gets the Main property.
/// </summary>
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance",
"CA1822:MarkMembersAsStatic",
Justification = "This non-static member is needed for data binding purposes.")]
public IBookDetailsViewModel BookDetails
{
get
{
return BookDetailsStatic;
}
}
* BookDetailsStatic
инициализируется из вызова контейнера IoC в ctor ViewModelLocator:
BookDetailsStatic = App.Kernel.Get<IBookDetailsViewModel>();
В любом сценарии вызов для получения IBookDetailsViewModel возвращает экземпляр
public class SampleBookDetailsViewModel: IBookDetailsViewModel
, который имеет пустой конструктор и набор свойств.
решено Мое представление, к которому я направлялся, было объявлено как UserControl и должно было быть PhoneApplicationPage.