1

2ページあります。Page1 は、次を使用してページ 2 に移動したいと考えています。

 private void listbox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            int index = listbox1.SelectedIndex;
            String pom = "";
            RssDataSet ob = lista.ElementAt(index);
            pom = pom + ob.description;
            NavigationService.Navigate(new Uri("/novaStrana.xaml?id="+pom, UriKind.Relative));
        }

基本的に、listbox1 からインデックスを取得し、ob から情報を取得して、Page2 に移動します。

問題は次のとおりです。ページ 2 で「pom」パラメーターを取得できません。基本的に、私の OnNavigatedTo メソッドは起動していません。Page2 ページは次のようになります。

public novaStrana()
        {

            InitializeComponent();            
        }

        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
        {
            String stuff = "";
            base.OnNavigatedTo(e);

            string msg = "";

             if (NavigationContext.QueryString.TryGetValue("msg", out msg))
            {

                stuff = msg;
            }
        }

まったく発射されないのはなぜですか?私は何度もデバッグを試みたので、これを知っています。

エミュレーターを実行し、リスト項目をクリックすると、デバッガーは Page2 が初期化されていることを示します。これは、コンストラクターが実行されていることを意味しますが、コンストラクターが完了すると、それだけです。Page2 は OnNavigatedTo にも到達しません。

助けてくれてありがとう。

編集:ページ2:

namespace ZaParsiranje
{
    public partial class novaStrana : PhoneApplicationPage
    {

        public novaStrana()
        {

             InitializeComponent();            
        }

        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
        {
            String stuff = "";
            base.OnNavigatedTo(e);

            string msg = "";

            if (NavigationContext.QueryString.TryGetValue("id", out msg))
            {

                stuff = msg;
            }
        }


    }
}

そして Page2 の xalm:

    <phone:PhoneApplicationPage 
    x:Class="ZaParsiranje.novaStrana"
    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"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"  
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    SupportedOrientations="Portrait" Orientation="Portrait"
    mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480"
    shell:SystemTray.IsVisible="True" Loaded="PhoneApplicationPage_Loaded">

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

        <!--TitlePanel contains the name of the application and page title-->
        <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
            <TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/>
            <TextBlock x:Name="PageTitle" Text="page name" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
        </StackPanel>

        <!--ContentPanel - place additional content here-->
        <Grid x:Name="ContentPanel" Grid.Row="1">
            <phone:WebBrowser Name="WebBroser1" />
        </Grid>
    </Grid>

    <!--Sample code showing usage of ApplicationBar-->
    <!--<phone:PhoneApplicationPage.ApplicationBar>
        <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">
            <shell:ApplicationBarIconButton IconUri="/Images/appbar_button1.png" Text="Button 1"/>
            <shell:ApplicationBarIconButton IconUri="/Images/appbar_button2.png" Text="Button 2"/>
            <shell:ApplicationBar.MenuItems>
                <shell:ApplicationBarMenuItem Text="MenuItem 1"/>
                <shell:ApplicationBarMenuItem Text="MenuItem 2"/>
            </shell:ApplicationBar.MenuItems>
        </shell:ApplicationBar>
    </phone:PhoneApplicationPage.ApplicationBar>-->

</phone:PhoneApplicationPage>
4

1 に答える 1

1

Page2 で「pom」パラメータを取得できません

"msg"キーで保存している間に QueryString の値を取得しようとしてい"id"ます。どうすれば正しい結果が得られると期待できますか?

コードを修正するだけです:

if (NavigationContext.QueryString.TryGetValue("id", out msg))
{
    stuff = msg;
}

編集

または取得する方法queryString

あなたのコンストラクター内でそれを取得します

public novaStrana()
        {
            InitializeComponent();            

            Loaded += (o, e) =>
            {
                  if (NavigationContext.QueryString.TryGetValue("id", out msg))
                  {
                        stuff = msg;
                  }
            }

        }

stuff&msgは、コンストラクターの外側 (ur クラス内) で定義されます。

于 2013-07-04T14:18:40.927 に答える