2016-02-27 4 views
-2

После PivotItem pivotItem = new PivotItem(); Я получаю Additional information: The application called an interface that was marshalled for a different thread. (Exception from HRESULT: 0x8001010E (RPC_E_WRONG_THREAD)). Что это должно быть? Я очень смущен.C#: Ошибка при создании PivotItem

Код:

foreach (Source source in sources) 
{ 
    PivotItem pivotItem = new PivotItem(); /* At this point it falls. */ 
    pivotItem.Header = source.Name; 
    pivotItem.Margin = new Thickness(0, -10, 0, 0); 

    ListView listView = new ListView(); 
    listView.ItemsSource = source.Articles; 
    listView.ItemTemplate = (DataTemplate)Resources["MainItemTemplate"]; 
    listView.ItemClick += OpenArticle_ItemClick; 
    listView.SelectionMode = ListViewSelectionMode.None; 
    listView.IsItemClickEnabled = true; 

    pivotItem.Content = listView; 
    pvtMain.Items.Add(pivotItem); 
} 
+0

Я не уверен, что без какого-либо дополнительного контекста («код ошибки или какие-либо детали»), мы можем помочь вам. –

+0

@EugenePodskal Пожалуйста, просмотрите мой отредактированный пост с информацией об ошибке. –

+0

Что такое 'PivotItem'? В каком контексте вы вызываете этот код? Не отправляйте сообщение об ошибке только после сообщения [MCVE]. –

ответ

1

на основе исключения, вы, кажется, пытается создать в потоке, чем поток пользовательского интерфейса нового PivotItem. Вам разрешено взаимодействовать с элементами пользовательского интерфейса в потоке пользовательского интерфейса.

Возможно, вы вызываете этот код из обработчика событий, который не был вызван из события пользовательского интерфейса. Вы должны быть в состоянии решить эту проблему с помощью Dispatcher, чтобы переключиться обратно в поток пользовательского интерфейса:

await Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() => 
{ 
    foreach (Source source in sources) 
    { 
     PivotItem pivotItem = new PivotItem(); /* At this point it falls. */ 
     pivotItem.Header = source.Name; 
     pivotItem.Margin = new Thickness(0, -10, 0, 0); 

     ListView listView = new ListView(); 
     listView.ItemsSource = source.Articles; 
     listView.ItemTemplate = (DataTemplate)Resources["MainItemTemplate"]; 
     listView.ItemClick += OpenArticle_ItemClick; 
     listView.SelectionMode = ListViewSelectionMode.None; 
     listView.IsItemClickEnabled = true; 

     pivotItem.Content = listView; 
     pvtMain.Items.Add(pivotItem); 
    } 
}); 
+0

Спасибо, он работает. –

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