GroupStyle HidesIfEmpty 中是否存在漏洞?

4
我有一个Windows Phone 8.1 WinRT应用程序。我正在使用SemanticZoom + ListView组合来通过CollectionViewSource显示分组列表。当我从所有组中删除所有项(这些是ObservableCollections),并开始向这些空组添加项目时,调试器会断开连接,并显示一个“agip.*”的页面,在读取DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION时出现问题。尽管这种情况经常发生,但现在由于某些原因,我的应用程序突然退出,而没有任何错误消息;这就是为什么我无法记住确切的文件名。
我的两个问题是:
1)如何使调试器重新工作,即显示那个“agip.*”页面,而不是静默退出?
2)通过试错,我成功地通过更改到来跟踪此问题的原因。我的应用程序可以正常工作而没有任何问题。这可能是WinRT中的错误吗?
PS:我可以通过将组标题可见性绑定到.items.count通过转换器来实现HidesIfEmpty行为,所以这里没有问题。
1个回答

1

回答您的问题

1)我该如何让调试器重新工作,即显示“agip.*”页面而不是静默退出?

尝试这个。打开异常设置窗口:菜单调试 -> 窗口 -> 异常设置。检查所有的异常类别。 然而,我没能让它工作。它只是以未处理的win32exceptions中断,没有任何提示在哪里发生了异常,并且即使附加另一个Visual Studio实例来调试devenv.exe进程并处理所有异常,也不提供有关异常的任何详细信息。

2)通过试错,我成功地追踪到了原因,方法是将<ListView.GroupStyle><GroupStyle HidesIfEmpty="true"更改为<ListView.GroupStyle><GroupStyle HidesIfEmpty="false"。我的应用程序可以正常工作而没有任何问题。这可能是WinRT中的一个错误吗?

看起来像是一个错误。

您的解决方法

我可以通过将组标题可见性绑定到.items.count通过转换器来实现HidesIfEmpty行为,所以这里没有问题。

这种方法在Windows 10上看起来不太好,例如,组标题底部有一个边框。因此,隐藏TextBlock并不能完全隐藏组标题。(也许我做错了什么)。
我用另一种方式解决了这个问题。
另一个解决方法是,在清除分组集合的每个组之后,尝试进行延迟。像这样:
foreach(var group in GroupsCollection)
{
    group.Clear();
    await Delay(1); // this is workaround
    group.Add(newItem);
}

这对我的情况有帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接