C#:创建 PivotItem 时出错

C#: Error with PivotItem creation

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))。应该是什么?我对此很困惑。

代码:

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);
}

根据异常,您似乎试图在 UI 线程以外的线程中创建新的 PivotItem。您只能与 UI 线程中的 UI 元素进行交互。

您可能从并非由 UI 事件触发的事件处理程序调用此代码。您应该能够通过使用 Dispatcher 切换回 UI 线程来解决问题:

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);
    }
});