0
我得到了導航起來,在我的應用程序運行,但我想躲便可欣賞到真正的路,所以我寫了這個UriMapper:麻煩與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>
這裏是我的導航按鈕單擊事件代碼:
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));
}
這裏是一個按鈕的XAML:
<Button Content="Home" Click="NavigateButton_Click" Tag="Home" HorizontalAlignment="Center" VerticalAlignment="Center" Width="100" Height="30" />
然而,當我點擊一個按鈕,我總體性他的錯誤:
Content for the URI cannot be loaded. The URI may be invalid.
在這一行:
this.ContentFrame.Navigate(new Uri(uri, UriKind.RelativeOrAbsolute));
我在做什麼錯?
編輯:
更多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>
這就是UriMapper應該處理的事情 - 查看第一個代碼片段,URI在那裏是顯式的。 – 2010-10-14 15:21:06
你的家是在視圖文件夾? – 2010-10-14 15:23:34
是的。這就是我寫這個導航的方式。 – 2010-10-14 15:25:08