Navigation Framework

  看过 Tim Heuer(http://www.silverlight.net/learn/graphics/windows,-screens,-navigation/navigation-framework)的Navigation Framework演示,内容讲的很好,也很深入。值得好好学习。

  我是跟着视频编写代码,运行时,点击跳转页面就会报错。一直以为代码写错了,检测代码,(MainPage.xaml)

<UserControl x:Class="SilverlightAppNavigationStudy.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"      
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">

    <Grid x:Name="LayoutRoot" Background="White">

        <StackPanel  Orientation="Horizontal" VerticalAlignment="Top">
            <StackPanel Orientation="Vertical" Width="250">
                <HyperlinkButton  Click="HyperlinkButton_Click" Content="Home" Tag="Home"></HyperlinkButton>
                <HyperlinkButton  Click="HyperlinkButton_Click" Content="About-Us" Tag="About-Us"></HyperlinkButton>
                <HyperlinkButton  Click="HyperlinkButton_Click" Content="My Customers" Tag="Customers"></HyperlinkButton>
               
            </StackPanel>

            <navigation:Frame x:Name="MainFrame" VerticalContentAlignment="Stretch"
                              HorizontalContentAlignment="Stretch" Margin="20" Source="/Views/HomePage.xaml">

            </navigation:Frame>
        </StackPanel>
    </Grid>

(App.xaml)

<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             x:Class="SilverlightAppNavigationStudy.App"
             xmlns:navcore="clr-namespace:System.Windows.Navigation;assembly=System.Windows.Controls.Navigation"
             >
    <Application.Resources>
        <navcore:UriMapper x:Key="uriMapper">
            <navcore:UriMapping Uri="Home"         MappedUri="/Views/HomePage.xaml"></navcore:UriMapping>
            <navcore:UriMapping Uri="About-Us"     MappedUri="/Views/AboutPage.xaml"></navcore:UriMapping>
            <navcore:UriMapping Uri="Customers"    MappedUri="/Views/CustomersList.xaml"></navcore:UriMapping>
            <navcore:UriMapping Uri="Customer/{id}" MappedUri="/Views/CustomerDetail.xaml?id={id}"></navcore:UriMapping>
        </navcore:UriMapper>
        <navcore:UriMapper x:Key="uriMapper2">
            <navcore:UriMapping Uri="Home"         MappedUri="/Views/HomePage.xaml"></navcore:UriMapping>
       
            <navcore:UriMapping Uri="Customers"    MappedUri="/Views/CustomersList.xaml"></navcore:UriMapping>
            <navcore:UriMapping Uri="Customer/{id}" MappedUri="/Views/CustomerDetail.xaml?id={id}"></navcore:UriMapping>
        </navcore:UriMapper>
    </Application.Resources>
</Application>

搜索,发现有很多网友出现一样的问题,幸好有网友提示 navigation没有加 UriMapper,

回到MainPage,在navigation:Frame x:Name="MainFrame" 后加上 UriMapper="{StaticResource uriMapper}"

重新编译,通过。运行良好。不过有个疑问,Tim Heuer的视频是没有加的,难道还有其他方法?

原文地址:https://www.cnblogs.com/ITBread/p/silverlightNavigation.html