点击按钮无法导航?

时间:2010-12-20 04:45:09

标签: c# silverlight visual-studio-2010 xaml windows-phone-7

以下是我的代码。点击按钮后,我无法从MasterPage.xaml导航到Slide_show.xaml。

 public partial class MainPage : PhoneApplicationPage
{ public MainPage()
    {
        InitializeComponent();
        Loaded += new RoutedEventHandler(MainPage_Loaded);


    }
  private void Play_C(object sender, RoutedEventArgs e)
    {
        //Slide_show obj=new Slide_show();
        //obj.MainPage_Loaded(sender,e);
        try
        {
            this.NavigationService.Navigate(new Uri("Slide_show.xaml",UriKind.Relative));

        }
        catch (Exception e1)
        {
            MessageBox.Show("unable to show");
        }
    }

xaml文件是

<phone:PhoneApplicationPage xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"  
x:Class="photoViewer.MainPage"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="PortraitOrLandscape" Orientation="Portrait"  
shell:SystemTray.IsVisible="True">

<!--LayoutRoot is the root grid where all page content is placed-->
<Grid x:Name="LayoutRoot" Background="Transparent">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
 <Button Content="Play" Grid.Row="1" Height="72" HorizontalAlignment="Right" Margin="0,696,170,0" Name="button5" VerticalAlignment="Top" Width="114" Background="Transparent"   Click="Play_C"/>


</Grid>

Slide_show.xaml.cs文件是

public class Slide_show : PhoneApplicationPage
{
 public Slide_show()
    {
        //InitializeComponent();

       Loaded += new RoutedEventHandler(MainPage_Loaded);
    }
  }

3 个答案:

答案 0 :(得分:2)

我认为你的Uri中缺少一个“/”。 this.NavigationService.Navigate(new Uri(“/ Slide_show.xaml”,UriKind.Relative)); 也试试..

答案 1 :(得分:2)

我看到3个问题。

首先,当导航到带有Relative Uri的页面时,您应该使用/启动uri。例如:

NavigationService.Navigate(new Uri("/Slide_Show.xaml", UriKind.Relative));

第二个是Slide_show.xaml.cs没有被定义为部分类。在这种情况下,您实际上定义了两个具有相同名称的类,而基于xaml将生成一个分类。 (或者更确切地说是生成的)

第三,您正在禁用对InitializeComponent()的调用。如果没有这个,页面将无法正确构建。 (假设你已经解决了最后两个问题。)

我猜你添加了新页面(“Slide_Show”)。然后删除了partial关键字(无论出于何种原因),然后注释掉对InitializeComponent的无效调用 放回您删除/注释掉的代码。模板把它放在那里是有原因的。

答案 2 :(得分:0)

您的try / catch中是否会遇到异常,或者它是否仅显示?如果有例外是什么?