3

大丈夫。私は C# と XAML を使用して Windows 8 (WinRT) アプリを開発しています。JSON からフェッチされたかなりの数の要素を含むリスト ボックスがあります。項目の 1 つをクリックすると、ニュース項目全体を表示する新しいページに移動します。これは機能します。

ただし、アイテムをクリックして転送され、電話の戻るボタンをクリックすると、アプリがクラッシュします。次のエラーが表示されますが、なぜ機能しないのかわかりません! 何か案は?

ArgumentOutOfRangeException

        private void NewsList_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
    {
        index = NewsList.SelectedIndex;

        NewsItems newsContentGetSet = new NewsItems();

        newsContentGetSet.news_id = newslistJson.ElementAt(index).news_id;
        newsContentGetSet.news_title = newslistJson.ElementAt(index).news_title;
        newsContentGetSet.news_abstract = newslistJson.ElementAt(index).news_abstract;
        newsContentGetSet.news_content = newslistJson.ElementAt(index).news_content;
        newsContentGetSet.news_author = newslistJson.ElementAt(index).news_author;
        newsContentGetSet.news_date_formatted = newslistJson.ElementAt(index).news_date_formatted;
        newsContentGetSet.user_firstname = newslistJson.ElementAt(index).user_firstname;
        newsContentGetSet.user_lastname = newslistJson.ElementAt(index).user_lastname;

        App.newsContentGetSet = newsContentGetSet;
        NavigationService.Navigate(new Uri("/NewsPage.xaml?language=" + chosenLanguage, UriKind.Relative));        
    }

例外:

System.ArgumentOutOfRangeException は処理されませんでした メッセージ = パラメーター名: インデックス StackTrace: System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument 引数、ExceptionResource リソース) で System.Collections.Generic.List 1.get_Item(Int32 index) at System.Linq.Enumerable.ElementAt[TSource](IEnumerable1 ソース、Int32 インデックス) で MunchApp3で System.ThrowHelper.ThrowArgumentOutOfRangeException() ._0.MainPage.NewsList_SelectionChanged_1(オブジェクト送信者、SelectionChangedEventArgs e) System.Windows.Controls.Primitives.Selector.OnSelectionChanged(SelectionChangedEventArgs e) at System.Windows.Controls.Primitives.Selector.InvokeSelectionChanged(List)1 unselectedItems, List1 selectedItems) で System.Windows.Controls.Primitives.Selector.SelectionChanger.End() で System.Windows.Controls.Primitives.Selector.OnItemsChanged(NotifyCollectionChangedEventArgs e) で System.Windows.Controls.ListBox.OnItemsChanged(NotifyCollectionChangedEventArgs e) でSystem.Windows.Controls.ItemsControl.OnItemCollectionChanged (オブジェクト送信者、NotifyCollectionChangedEventArgs e) で System.Windows.Controls.ItemCollection.NotifyCollectionChanged(NotifyCollectionChangedEventArgs e) で System.Windows.Controls.ItemCollection.UpdateItemsSourceList(IEnumerable newItemsSource) で System.Windows.Controls System.Windows.DependencyObject の .ItemsControl.ItemsSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)。RaisePropertyChangeNotifications (DependencyProperty dp、Object oldValue、Object newValue) System.Windows.DependencyObject.UpdateEffectiveValue (DependencyProperty プロパティ、EffectiveValueEntry oldEntry、EffectiveValueEntry& newEntry、ValueOperation 操作) で System.Windows.DependencyObject.SetValueInternal(DependencyProperty dp、オブジェクト値、ブール値 allowReadOnlySet) System.Windows.DependencyObject.SetValueInternal (DependencyProperty dp、オブジェクト値) で System.Windows.DependencyObject.SetValue (DependencyProperty dp、オブジェクト値) で System.Windows.Controls.ItemsControl.set_ItemsSource (IEnumerable 値) で MunchApp3._0.MainPage System.Net.WebClient の .webClientNews_DownloadStringCompleted(オブジェクト送信者、DownloadStringCompletedEventArgs e)。OnDownloadStringCompleted(DownloadStringCompletedEventArgs e) at System.Net.WebClient.DownloadStringOperationCompleted(Object arg) at System.Reflection.RuntimeMethodInfo.InternalInvoke(RuntimeMethodInfo rtmi, オブジェクト obj, BindingFlags invokeAttr, バインダー バインダー, オブジェクト パラメーター, CultureInfo カルチャ, Boolean isBinderDefault, Assembly caller, System.Reflection.RuntimeMethodInfo.InternalInvoke(Object obj、BindingFlags invokeAttr、バインダー バインダー、Object[] パラメータ、CultureInfo カルチャ、StackCrawlMark& stackMark) でのブール値の verifyAccess、StackCrawlMark& stackMark) System.Reflection.MethodBase.Invoke(Object obj, Object[]パラメータ) で System.Delegate.DynamicInvokeOne(Object[] args) で System.MulticastDelegate.DynamicInvokeImpl(Object[] args) で System.Delegate.System.Windows.Threading.DispatcherOperation.Invoke() の DynamicInvoke(Object[] args) System.Windows.Threading.Dispatcher.Dispatch(DispatcherPriority 優先度) の System.Windows.Threading.Dispatcher.OnInvoke(Object context) の System. System.Windows.Hosting.DelegateWrapper.InternalInvoke(Object[] args) の Windows.Hosting.CallbackCookie.Invoke(Object[] args) System.Windows.RuntimeHost.ManagedHost.InvokeDelegate(IntPtr pHandle, Int32 nParamCount, ScriptParam[] pParams 、ScriptParam& pResult)System.Windows.Hosting.DelegateWrapper.InternalInvoke(Object[] args) での Invoke(Object[] args) System.Windows.RuntimeHost.ManagedHost.InvokeDelegate(IntPtr pHandle, Int32 nParamCount, ScriptParam[] pParams, ScriptParam& pResult) での Invoke(Object[] args)System.Windows.Hosting.DelegateWrapper.InternalInvoke(Object[] args) での Invoke(Object[] args) System.Windows.RuntimeHost.ManagedHost.InvokeDelegate(IntPtr pHandle, Int32 nParamCount, ScriptParam[] pParams, ScriptParam& pResult) での Invoke(Object[] args)

4

1 に答える 1

0

試してみてください

Dispatcher.BeginInvoke(() =>
{
   NavigationService.Navigate(new Uri("/NewsPage.xaml?language=" + chosenLanguage, UriKind.Relative));
});  
于 2013-06-02T19:11:00.323 に答える