У меня есть пользовательский элемент управления, который повторно используется на нескольких страницах, включая MainPage. Я хотел бы выполнить некоторую логику в пользовательском элементе управления , если событие происходит на текущей странице для экземпляра пользовательского элемента управления. Логика такая же, независимо от того, что представляет собой страница, поэтому я бы предпочел, чтобы пользовательский элемент управления не вызывал делегата с родительской страницы.UWP Получить тип страницы из User Control из кода
//Event method in the user control:
private void Dummy_Event(object sender, DummyEventArgs e)
{
// Handle global application events only if this page is active
if (((Frame)Window.Current.Content).CurrentSourcePageType == typeof(/* PAGE TYPE */))
{
//DO STUFF
}
}
В if
заявлении я проверяю, если текущий тип страницы приложения равно странице, что этот экземпляр пользовательского элемента управления является дочерним.
Я мог бы делать повторяющиеся звонки this.Parent
, но даже если я в конечном итоге доберусь до элемента Page
, нет способа сообщить, на какой странице это, насколько я знаю.
У кого-нибудь есть идеи?
Можете ли вы добавить свойство boolean в usercontrol и установить значение true в xaml родительских страниц, на которые вы хотите запустить эту дополнительную логику? –
Sry, я не получил то, что вы просили. Вы уже получили тип страницы по типу CurrentSourcePageType. Тогда что еще вы хотите? –
@ ElvisXia-MSFT «CurrentSourcePageType» - это текущая страница, но мне нужно сравнить ее со страницей, к которой принадлежит экземпляр пользовательского элемента управления, поскольку все страницы кэшированы, и я не хочу, чтобы код запускался, если конкретная страница не является активной. – ohgross