UWP从代码隐藏中获取用户控件的页面类型

时间:2016-10-24 18:58:57

标签: c# uwp windows-10-universal

我有一个在多个页面上重用的用户控件,包括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元素,也就我所知,无法告诉它是哪个页面。

有没有人有任何想法?

1 个答案:

答案 0 :(得分:1)

如果你让UserControl本身负责确定它是否在Page的当前Frame范围内,事情会变得有些混乱。我会遵循Mark的建议并公开一个布尔属性(可能是IsActive),您可以使用它来决定是否应该在UserControl内处理该事件。现在,每个Page都需要在OnNavigatedTo内设置此标记并在OnNavigatedFrom内清除它。