【问题标题】:How to get Type when i using navigation in Silverlight 5在 Silverlight 5 中使用导航时如何获取类型
【发布时间】:2015-01-09 06:47:35
【问题描述】:

我在 MainPage 中定义了一个 Frame:

<navigation:Frame x:Name="ContentFrame" Style="{StaticResource ContentFrameStyle}" Navigated="ContentFrame_Navigated" NavigationFailed="ContentFrame_NavigationFailed"  Navigating="ContentFrame_Navigating">
                <navigation:Frame.UriMapper>
                    <uriMapper:UriMapper>
                        <uriMapper:UriMapping Uri="" MappedUri="/Views/Home.xaml"/>
                        <uriMapper:UriMapping Uri="/Function/{pageName}" MappedUri="/Views/Function/{pageName}.xaml"/>
                    </uriMapper:UriMapper>
                </navigation:Frame.UriMapper>
</navigation:Frame>

在后面的代码中:

string uriStr = "/Function/Page1";
//check it here
if(uriStr is available) //available mean can navigate to uriStr
{
    ContentFrame.Navigate(new Uri(uriStr,UriKind.Relative));
}

1./ 如何在调用方法 .Navigate() 之前检查“uriStr”是否可用?

2./ 如果“uriStr”可用,我如何获取页面类型?

请帮帮我!!! 谢谢!!!

【问题讨论】:

    标签: c# silverlight navigation


    【解决方案1】:

    第一个问题:

    如何在调用方法 .Navigate() 之前检查“uriStr”是否可用?

    我不知道答案,但我确信有一些方法可以通过反思。我所做的是处理 ContentFrame_NavigationFailed 事件,这取决于您想知道它是否存在的原因,应该对您有用。

    第二个问题:

    如果“uriStr”可用,我如何获取页面类型?

    不确定您试图在代码中的哪个位置获取此信息,但我所做的是使用此代码在 ContentFrame_Navigated 事件中抓取页面:

    If TypeOf e.Content Is Page Then
        _CurrentPage = e.Content
    Else
        _CurrentPage = Nothing
    End If
    

    然后我可以在任何我喜欢的地方使用它。如果您希望在ContentFrame_Navigating 事件中使用此功能,则必须考虑反射,但我认为这不会有太大帮助,因为您将不会拥有尚未创建的页面实例,因为此事件是在那之前。

    【讨论】:

    • 谢谢史蒂夫。我想在实例处于活动状态之前使用反射来检查它们。但我不知道如何做到这一点。我只有一个字符串来开始我的工作。
    猜你喜欢
    • 1970-01-01
    • 2016-05-17
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多