2010-10-14 7 views
0

je me suis vers le haut de la navigation et en cours d'exécution dans ma demande, mais je voulais cacher le vrai chemin de vues si je l'ai écrit ce UriMapper:Trouble with UriMapper

<Application 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
x:Class="MyApplication.App" 
    xmlns:navcore="clr-namespace:System.Windows.Navigation;assembly=System.Windows.Controls.Navigation"> 
<Application.Resources> 
    <!-- Resources scoped at the Application level should be defined here. --> 
     <navcore:UriMapper x:Key="uriMapper"> 
      <navcore:UriMapping Uri="{}{page}" MappedUri="/Views/{page}.xaml" /> 
     </navcore:UriMapper> 
</Application.Resources> 
</Application> 

Voici mon bouton de navigation cliquez sur le code de l'événement:

private void NavigateButton_Click(object sender, RoutedEventArgs e) 
    { 
     Button btn = sender as Button; 
     string uri = btn.Tag.ToString(); 

     this.ContentFrame.Navigate(new Uri(uri, UriKind.RelativeOrAbsolute)); 
    } 

Et voici XAML d'un bouton:

<Button Content="Home" Click="NavigateButton_Click" Tag="Home" HorizontalAlignment="Center" VerticalAlignment="Center" Width="100" Height="30" /> 

Cependant, lorsque je clique sur un bouton, je reçois t son erreur:

Content for the URI cannot be loaded. The URI may be invalid. 

A cette ligne:

this.ContentFrame.Navigate(new Uri(uri, UriKind.RelativeOrAbsolute)); 

Qu'est-ce que je fais mal?

EDIT:

Plus fichiers XAML ... MainPage.xaml:

<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit" 
      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" 
      x:Class="MyApplication.MainPage"> 

    <Grid x:Name="LayoutRoot"> 
     <Grid.Background> 
      <ImageBrush ImageSource="/bg.jpg" Stretch="Fill"/> 
     </Grid.Background> 
     <Rectangle Fill="#FF252525" Stroke="Black" Opacity="0.7" RadiusX="10" RadiusY="10" Margin="0,100,0,0" StrokeThickness="0" Width="600" HorizontalAlignment="Center" Height="350" VerticalAlignment="Top" d:LayoutOverrides="Height"/> 
     <Canvas x:Name="NavigationCanvas" Margin="0,50,0,0" HorizontalAlignment="Center" Width="600"> 
      <toolkit:ExpressionDarkTheme Height="30" Canvas.Left="188" Canvas.Top="11" Width="100" Foreground="White" Background="{x:Null}"> 
       <Button Content="Home" Click="NavigateButton_Click" Tag="Home" HorizontalAlignment="Center" VerticalAlignment="Center" Width="100" Height="30" /> 
      </toolkit:ExpressionDarkTheme> 
         <!-- etc more buttons --> 
     </Canvas> 

     <navigation:Frame x:Name="ContentFrame" Margin="15,115,15,0" Height="320" VerticalAlignment="Top" Source="Home">    
     </navigation:Frame> 
    </Grid> 
</UserControl> 

Home.xaml:

<navigation:Page x:Class="MyApplication.Views.Home" 
    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:DesignWidth="640" d:DesignHeight="480" 
    Title="Home"> 

    <Grid x:Name="LayoutRoot" Width="570" Height="320" > 
     <TextBlock TextWrapping="Wrap" Foreground="White"> 
      Home. 
     </TextBlock> 
    </Grid> 

</navigation:Page> 

Répondre

2

Ce document énonce les problèmes, donner this essayer ...

+0

C'est ce que UriMapper est censé prendre en charge - voir les premiers extraits de code, les URI y sont explicites. –

+0

Votre domicile se trouve dans le dossier Views? –

+0

Oui. Voilà comment j'ai écrit cette navigation. –