ComException при привязке данных в приложении XAML Metro

Я получаю исключение COM при привязке ListView к элементам списка. Исключение выбрасывается из 2-й строки здесь. "Первое случайное исключение типа "System.Runtime.InteropServices.COMException" произошло в app.exe

Дополнительные сведения: катастрофический сбой (исключение из HRESULT: 0x8000FFFF (E_UNEXPECTED))».

Playlists = content.getPlayLists();
PlayListView.DataContext = Playlists;

XAML, объявляющий привязку

<ListView x:Name="PlayListView" ItemsSource="{Binding ElementName=Playlists}" Background="AntiqueWhite" SelectionChanged="PlayListView_SelectionChanged" HorizontalAlignment="Left" Height="364" Margin="56,268,0,0" VerticalAlignment="Top" Width="308">
        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding Path=Name}"/>
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

Я упростил PlayList, имея всего 2 строки, но все еще имею ту же проблему.

public class PlayList
{
    private string playListName;
    private string description;
    private DateTime dateTimeCreated;
    private int numTracks;
    private List<Track> tracks;
    private string id;

    public string Name
    {
        get { return playListName; }
        set { playListName = value; }
    }

    public string Description
    {
        get { return description; }
        set { description = value; }
    }

    public DateTime CreatedDate
    {
        get { return dateTimeCreated; }
        set { dateTimeCreated = value; }
    }

    public int NumberOfTracks
    {
        get { return numTracks; }
        set { numTracks = value; }
    }

    public List<Track> Tracks
    {
        get { return tracks; }
        set { tracks = value; }
    }

    public String Id
    {
        get { return id; }
        set { id = value; }
    }
}

person srs    schedule 01.02.2012    source источник
comment
Хм, некоторые вещи никогда не меняются, отчеты об ошибках COM всегда были довольно плохими. Настоящая катастрофа.   -  person Hans Passant    schedule 01.02.2012


Ответы (1)


Проблема связана с тем, что элемент пользовательского интерфейса не установлен в основном потоке. Я исправил это с помощью

PlayListView.Dispatcher.Invoke(Windows.UI.Core.CoreDispatcherPriority.Normal, (s, a) => 
{ 
    PlayListView.DataContext = Playlists; 
}, PlayListView, null);
person srs    schedule 07.02.2012