【发布时间】:2018-04-08 03:00:33
【问题描述】:
我正在使用 C# 开发 WPF 应用程序,并且遇到了一个有趣的问题。为什么忽略 TreeViewItem 中的展开/折叠事件引发的异常?其他事件,包括像 MouseDoubleClick 这样的 TreeViewItem 中的事件,表现出异常的正常行为。 Visual Studio 中的诊断工具显示异常被抛出,然后在 PresentationFramework 代码中被捕获。例如,
XAML
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<TreeView>
<TreeViewItem Header="Parent" Expanded="TreeViewItem_Expanded" MouseDoubleClick="TreeViewItem_MouseDoubleClick">
<TreeViewItem Header="Child" />
</TreeViewItem>
</TreeView>
</Grid>
</Window>
XAML.cs
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void TreeViewItem_Expanded(object sender, RoutedEventArgs e)
{
throw new Exception("Ignored"); //Same issue with Collapsed event
}
private void TreeViewItem_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
throw new Exception("Normal exception behavior");
}
}
我正在实现一个延迟加载的 TreeView,我花了一天的大部分时间来调试我的应用程序,却发现它静悄悄地失败了,而最初的问题是一个简单的修复。我使用 Expanded 和 Collapsed 事件的方法完全错误吗?如果没有,是否有任何优雅的方法可以不让这些异常静默失败?
【问题讨论】:
标签: c# wpf xaml data-binding treeviewitem