简体   繁体   中英

Navigate from Panorama Page to a non-Panorama Page (listitems)

Here is my xaml of the Panorama page item.

<controls:PanoramaItem x:Name="deeln" Header="Deelnemers" Style="{StaticResource subtitle}">
                <!--Double line list with image placeholder and text wrapping-->
                <ListBox Margin="12,0,-12,0" ItemsSource="{Binding ItemsDeelnemer}" x:Name="lbDeelnemer" SelectionChanged="lbDeelnemer_SelectionChanged">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <ScrollViewer HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Disabled">
                                <StackPanel Orientation="Horizontal" Margin="0,0,0,17">
                                    <TextBlock Foreground="Black" TextWrapping="Wrap" Text="{Binding LineNr}" Style="{StaticResource PhoneTextExtraLargeStyle}" ></TextBlock>
                                    <StackPanel Width="430" Height="100">
                                        <TextBlock Foreground="Black" TextWrapping="Wrap" Text="{Binding LineNaamWielrenner1}" Style="{StaticResource PhoneTextExtraLargeStyle}" FontSize="35"></TextBlock>
                                        <TextBlock Foreground="Black" TextWrapping="Wrap" Text="{Binding LineNaamWielrenner2}" Style="{StaticResource PhoneTextExtraLargeStyle}" FontSize="35"></TextBlock>
                                    </StackPanel>
                                </StackPanel>
                            </ScrollViewer>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>
            </controls:PanoramaItem>

Here is my code in the Panorama page.

private void lbDeelnemer_SelectionChanged(object sender, SelectionChangedEventArgs e) { #region go to specific deelnemerinfo screen

        // If selected index is -1 (no selection) do nothing
        if (lbDeelnemer.SelectedIndex == -1)
            return;

        // Navigate to the new page

        if (lbDeelnemer.SelectedIndex == 0)
        {
            NavigationService.Navigate(new Uri("/DeelnemerInfo.xaml", UriKind.Relative));
            //NavigationService.Navigate(new Uri("/DeelnemerInfo.xaml?selectedItem=" + lbDeelnemer.SelectedIndex, UriKind.Relative));
        }

        // Reset selected index to -1 (no selection)
        lbDeelnemer.SelectedIndex = -1;

        #endregion
    }

Here is my code from the non panorama page.

protected override void OnNavigatedTo(NavigationEventArgs e) { //second try string strItemIndex; if (NavigationContext.QueryString.TryGetValue("goto", out strItemIndex)) PanoramaControl.DefaultItem = MyPanorama.Items[Convert.ToInt32(strItemIndex)];

        base.OnNavigatedTo(e);

        //first try
        string selectedIndex = "";
        if (NavigationContext.QueryString.TryGetValue("selectedItem", out selectedIndex))
        {
            int index = int.Parse(selectedIndex);
            DataContext = App.ViewModel.ItemsDeelnemer[index];
        }
    }

My problem, I want to navigate like you do with a default databound application. You click on the first listitem and you go to a new page (non panorama). It looks simple but i can't find it.

Try binding the tag attribute to the index/itemvalue

       <ListBox>
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel>
                        <HyperlinkButton Tag="{Binding FileName}" Click="location_Click"/>
                        <TextBlock Text="{Binding DateCreated}"/>                                       
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

navigate accordingly

private void location_Click(object sender, RoutedEventArgs e)
        {
            HyperlinkButton clicked = (HyperlinkButton)sender;
            string uri = "/noteapp;component/ViewEdit.xaml?id=" + clicked.Tag;
            NavigationService.Navigate(new Uri(uri, UriKind.Relative));
        }

and on panaroma page use this something like this to retrieve the value

filename = NavigationContext.QueryString["id"];
var storage = IsolatedStorageFile.GetUserStoreForApplication();
using (var file = storage.OpenFile(filename, FileMode.Open))

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM