2010-12-20 3 views
2

Das Folgende ist mein code.Ich kann nicht von MasterPage.xaml zu Slide_show.xaml auf Knopfdruck navigieren.Kann nicht auf Knopfdruck navigiert werden?

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"); 
     } 
    } 

die XAML-Datei ist

<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> 

Die Slide_show.xaml.cs Datei ist

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

     Loaded += new RoutedEventHandler(MainPage_Loaded); 
    } 
    } 

Antwort

2

Ich sehe 3 Probleme.

Die erste ist, dass wenn Sie zu einer Seite mit einem Relative Uri URI navigieren Sie die URI mit einem / starten sollen. z.B:

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

Der zweite ist, dass Slide_show.xaml.cs nicht als Teilklasse definiert ist. In diesem Fall definieren Sie im Wesentlichen 2 Klassen mit dem gleichen Namen wie eine partielle Klasse basierend auf der XAML generiert wird. (Oder eher die generierte)

Drittens deaktivieren Sie den Anruf an InitializeComponent(). Ohne dies wäre die Seite nicht korrekt aufgebaut. (Angenommen, Sie hätten die letzten 2 Ausgaben adressiert.)

Ich vermute, dass Sie die neue Seite hinzugefügt haben ("Slide_Show"). Sie haben dann das Teilschlüsselwort (aus welchem ​​Grund auch immer) entfernt und dann den nun ungültigen Aufruf von InitializeComponent auskommentiert.
Setzen Sie den gelöschten/auskommentierten Code zurück. Die Vorlage stellt es aus einem bestimmten Grund dort.

+0

Danke für die Antwort .. Ich rite, dass ich den Code hatte, aber dann kommentierte es..Coz hatte immer einen Fehler, der besagt, dass InitializeComponent() im aktuellen Kontext nicht gefunden wird – Shaireen

2

Ich denke, ein "/" in Ihrem Uri fehlt. this.NavigationService.Navigate (neues Uri ("/ Slide_show.xaml", UriKind.Relative)); noch versuchen ..

+0

Ich tat dies, versuchen aber Slide_show.xaml nicht sichtbar ist .. – Shaireen

0

Wird eine Ausnahme in Ihrem Versuch/fangen gefangen oder wird es gerade nicht angezeigt? Wenn es eine Ausnahme gibt, was ist das?

+0

I t in App.xaml.cs an den Debugger Bruch geht und zeigt Navigation fehlgeschlagen .. private void RootFrame_NavigationFailed (object sender, NavigationFailedEventArgs e) { wenn (System.Diagnostics.Debugger.IsAttached) { // Eine Navigation ist fehlgeschlagen; Einbruch in den Debugger System.Diagnostics.Debugger.Break(); } } – Shaireen

+0

Können Sie die tatsächliche Ausnahme von e.Exception erhalten? – Fishcake

+0

Wie bekomme ich das? Ich habe versucht e1.getBaseException(); .. aber nichts passiert – Shaireen