1

Следуя инструкциям в http://www.geekchamp.com/articles/windows-phone-mvvm-master---details-navigation-in-5-minutes, я добавил новый проект для моего решения, чтобы отобразить MasterPage (содержащий ListBox с изображением и тексблоком в DataTemplate) и DetailsPage (Header, Image и TextBlock в StackPanel) , В списке представлены только штрафом, но нажав либо на изображение или TextBlock не перейти к DetailsPage или где-нибудь еще, но он выдает эту ошибку на выходе:Перейдите с ListBox на страницу подробных сведений. WP8

Исключение из «System.InvalidOperationException» типа произошел в Microsoft.Phone.ni.dll и не был обработан до управляемой/родной границы . Программа «[732] TaskHost.exe» вышла с кодом -1 (0xffffffff).

И идет к этой части кода в файле App CS:

// Code to execute if a navigation fails 
private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e) 
{ 
    if (Debugger.IsAttached) 
    { 
     // A navigation has failed; break into the debugger 
      Debugger.Break(); 
    } 
} 

Если я придерживаюсь курсор параметр 'е' в процедуре NavigationFailed, он говорит:

XAML не найден на карте '/DetailsPage.xaml'

Это то, что я имею в «MasterPage.xaml», есть список:

<StackPanel x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> 
    <TextBlock Text="Tips Semana 1" Style="{StaticResource WeekHeader}"/> 

    <ListBox x:Name="MainListBox" Margin="10" Background="#50F5F5F5" Foreground="Black" 
      ItemsSource="{Binding Items}" 
      SelectionChanged="MainListBox_SelectionChanged" > 

     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal"> 
        <Image Source="{Binding Image}" Width="100" Height="100" Stretch="Uniform"/> 
        <TextBlock Text="{Binding Title}" TextWrapping="Wrap" Margin="10" 
           FontSize="25" VerticalAlignment="Center"/> 
       </StackPanel> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 
</StackPanel> 

И вот код позади. Пожалуйста, если кто-нибудь может сказать мне ошибку и вести меня правильно в использовании SelectedItem/SelectedItem/SelectedIndex/SelectedIndex (я просто не знаю, как использовать их, ни их правильное обозначение)

private void MainListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    //If Selected Item is null (no selection) do nothing 
    if (MainListBox.SelectedItem == null) 

     return; 

    //Navigate to the new page 
    NavigationService.Navigate(new Uri("/DetailsPage.xaml?selectedItem=" + MainListBox.SelectedItem, UriKind.Relative)); 

    //NavigationService.Navigate(new Uri("/DetailsPage.xaml?selectedIndex=" + MainListBox.SelectedIndex, UriKind.Relative)); 

    //Reset selected item to null (no selection) 
    MainListBox.SelectedItem = null; 
} 
+0

Разве ваш Solution Explorer выглядит так: http://i.imgur.com/EI62RqS.png? –

+0

Да, это выглядит так же, как и папка «images». –

ответ

0

Во-первых, изменения ваш код обратно до SelectedIndex, однако я бы использовал другой номер, чтобы идентифицировать ваши пользовательские классы.

Это исключение означает, что вы получаете в большинстве случаев средство, которое не может найти запрашиваемую страницу в вашем решении. Если вы переместили DetailsPage в какой-то вложенной, вам необходимо изменить путь к чему-то вроде этого: [Subfolder] /DetailsPage.xaml ...

Кроме того, если вы получите исключение снова, наведите курсор мыши на e аргумент в private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e) и сказать нам что он говорит.

+0

Позвольте мне изменить мое сообщение, чтобы включить то, что он говорит в RootFrame_NavigationFailed ... –

0

Поставлено! Вы были правы Parad1s3. Поскольку я добавил новый проект в свое решение, навигационная служба требует полного перехода к второму проекту и странице для навигации (интересно, я думаю, поскольку я перемещаюсь между страницами уже во втором проекте). Ну, вот мое решение:

В MasterPage:

NavigationService.Navigate(new Uri("/DataBoundApp1;component/DetailsPage.xaml?selectedItem=" + (MainLongListSelector.SelectedItem as ItemViewModel).ID, UriKind.Relative)); 

Благодарим Вас за помощь!

+0

Рад, что он работает! Вы должны упомянуть, что ваше решение имеет больше проектов;) Навигация немного отличается по мере вашего решения. – Filip

Смежные вопросы