2012-02-01 43 views
0

我在将ListView绑定到List项目时收到COM异常。这里的例外是从第二行中抛出。 “ 'System.Runtime.InteropServices.COMException' 类型的第一次机会异常发生在APP.EXEComException,而XAML Metro应用程序中的数据绑定

附加信息:灾难性故障(从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; } 
    } 
} 
+0

嗯,有些事情永远不会改变,COM错误报告总是相当差。真正的灾难。 – 2012-02-01 01:03:43

回答

0

问题是由于未在主线程上设置UI元素。我修复了它使用

PlayListView.Dispatcher.Invoke(Windows.UI.Core.CoreDispatcherPriority.Normal, (s, a) => 
{ 
    PlayListView.DataContext = Playlists; 
}, PlayListView, null); 
相关问题