设置项派生列表框的来源引发“灾难性故障”

本文关键字:灾难性 故障 灾难性故障 派生 列表 设置 | 更新日期: 2023-09-27 18:31:16

我正在为Windows 8 WinRT框架开发。以下示例代码引发异常:

Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))

这是当前 WinRT 框架中的另一个错误(我使用的是 VS11 和消费者预览版)?有人知道如何解决这个问题吗?

顺便说一句:我已经用Windows Phone 7.5 Silverlight测试了相同的代码,它可以正常工作...

感谢您的帮助。

public class MyListBox : ListBox
{
}
public sealed partial class BlankPage : Page
{
    public BlankPage()
    {
        this.InitializeComponent();
    }
    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        var box1 = new ListBox(); 
        box1.ItemsSource = new List<Object> { new Object() }; // works without problems
        Content = box1; 
        var box2 = new MyListBox();
        box2.ItemsSource = new List<Object> { new Object() }; // throws exception
        Content = box2; 
    }
}

设置项派生列表框的来源引发“灾难性故障”

我在

子类化ListView时遇到了类似的问题。就我而言,以下方法部分有帮助:我停止尝试直接在代码隐藏中设置列表视图的 ItemsSource,而是在 XAML 中创建 CollectionViewSource,如下所示:

<UserControl.Resources>
    <CollectionViewSource x:Name="myCollectionViewSource"/>
</UserControl.Resources>
...
...
<ListView
    ...
    ItemsSource="{Binding Source={StaticResource myCollectionViewSource}}" />

在我设置的后面的代码中

this.myCollectionViewSource.Source = new List<Object> { new Object() }; // The real data source respectively

然而,这似乎只是推迟了问题。至少就我而言。在我的真实示例中,我使用 ObservableVector 作为数据源。一旦执行了 ObservableVector 集合的任何更改(例如 Clear),我也会遇到灾难性故障 (0x8000FFFF)。一旦我使用原始的ListView(不是我的子类化版本),一切就会再次正常工作 - 与您的情况完全相同。所以我的回答不能理解为问题的解决方案,但也许这是一个值得尝试的提示。在我的情况下,原始分配工作正常,问题首先出现在可观察集合尝试更新之后。我尝试了ObservableCollection(应该在CP中工作,在DP中没有),但在那里我遇到了其他问题。听听你是否能够在这条路上取得任何进展会很有趣......