我有一个在多个页面上重用的用户控件,包括MainPage。我想在用户控件中执行一些逻辑如果事件发生在用户控件实例的当前页面上。无论页面是什么,逻辑都是相同的,所以我不希望用户控件从父页面调用委托。
//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
元素,也就我所知,无法告诉它是哪个页面。
有没有人有任何想法?
答案 0 :(得分:1)
如果你让UserControl
本身负责确定它是否在Page
的当前Frame
范围内,事情会变得有些混乱。我会遵循Mark的建议并公开一个布尔属性(可能是IsActive
),您可以使用它来决定是否应该在UserControl
内处理该事件。现在,每个Page
都需要在OnNavigatedTo
内设置此标记并在OnNavigatedFrom
内清除它。