演练:调试 WPF 应用程序
本演练演示如何使用 WPF 设计器调试简单的 Windows Presentation Foundation (WPF) 应用程序。 您将使用**“异常助手”**对话框来解释可扩展应用程序标记语言 (XAML) 分析异常。
在本演练中,您将执行下列任务:
创建一个 WPF 项目。
解释异常。
解释子控件中出现的异常。
完成本演练后,您将知道如何解释在 XAML 分析期间出现的异常。
提示
显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您现用的设置或版本。 若要更改设置,请在“工具”菜单上选择“导入和导出设置”。 有关更多信息,请参见 使用设置。
系统必备
您需要以下组件来完成本演练:
- Visual Studio 2010.
创建项目
第一步是为应用程序创建项目。
创建项目
使用 Visual Basic 或 Visual C# 创建一个名为 DebuggingExample 的新 WPF 应用程序项目。 有关更多信息,请参见如何:创建新的 WPF 应用程序项目。
MainWindow.xaml 将在 WPF 设计器中打开。
在 XAML 视图中,将窗口的 Background 属性设置为“Azure”。
<Window x:Class="DebuggingExample.MainWindow" xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml" Background="Azure" Title="MainWindow" Height="300" Width="300"> <Grid> </Grid> </Window>
在设计视图中,窗口的背景颜色将更新。
将“Azure”更改为“Azurer”并在“设计”视图中单击。
“设计”视图将显示消息“文档包含一些错误,必须修复这些错误才能更新设计器。 请单击此处打开‘错误列表’”。
而且,**“错误列表”**窗口将显示“标记无效”错误消息。
从**“调试”菜单中选择“启动调试”**。
此时,应用程序启动,XAML 视图打开,并出现**“异常助手”**对话框,如下面的插图所示。
注意 如果在“异常助手”出现时未打开 XAML 视图,请关闭**“仅我的代码”**调试选项。 有关更多信息,请参见如何:单步执行“仅我的代码”。
解释异常
异常是一个 XAML 分析错误。 **“异常助手”**对话框会显示有关该错误的信息,可以使用这些信息来解释错误原因。
解释异常
在**“异常助手”对话框中单击“查看详细信息…”**链接。
将打开**“查看详细信息”**对话框。
在**“异常快照”部分中,展开“System.Windows.Markup.XamlParseException”**项。
“LineNumber”项显示“3”,“LinePosition”项显示“5”。
单击**“消息”**项。
该行的末尾显示一个向下箭头按钮。 单击该向下箭头按钮查看整个错误消息,如下图所示。
该消息内容为“无法将特性‘Background’中的值转换为‘System.Windows.Media.Brush’类型的对象。 标记无效。 标记文件‘DebuggingExample;component/MainWindow.xam’中行 3 位置 5 的对象‘DebuggingExample.MainWindow’处的错误。”
此异常描述的是在 MainWindow.xaml 文件的第五行遇到的 XAML 分析错误。
引发该异常的原因是用于 Brush 的 TypeConverter 未能将“Azurer”字符串转换为 Brush 对象。
单击**“确定”关闭“查看详细信息”**对话框。
单击**“确定”关闭“异常助手”**对话框。
从**“调试”菜单中选择“停止调试”**。
创建 UserControl 项目
可以使用**“异常助手”**对话框来解释在单独的程序集中的控件中引发的错误。
创建项目
在 XAML 视图中,将 Background 属性的值重新更改为“Azure”。
向解决方案中添加一个名为 DemoControlLibrary 的新 WPF 用户控件库项目。 有关更多信息,请参见如何:创建 WPF UserControl 库项目。
将在 WPF 设计器中打开 UserControl1.xaml。
在 XAML 视图中,将窗口的 Background 属性设置为“Plum”。
<UserControl x:Class="DemoControlLibrary1.UserControl1" xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml" Background="Plum" Height="300" Width="300"> <Grid> </Grid> </UserControl>
生成解决方案。
在**“解决方案资源管理器”**中的 DebuggingExample 项目中,添加一个对 DemoControlLibrary 项目的引用。
在 WPF 设计器中打开 MainWindow.xaml。
通过在 <Window> 开始标记中插入以下 XAML 来映射 DemoControlLibrary 命名空间。 有关更多信息,请参见如何:将命名空间导入 XAML。
xmlns:d="clr-namespace:DemoControlLibrary;assembly=DemoControlLibrary"
在 <Grid> 开始标记之后插入以下 XAML。
<d:UserControl1 />
“设计”视图将更新为新背景颜色。
在 WPF 设计器中打开 UserControl1.xaml。
在 XAML 视图中,将“Plum”更改为“Plumr”。
从**“调试”菜单中选择“启动调试”**。
此时,应用程序启动,XAML 视图打开到 UserControl1.xaml,并出现**“异常助手”**对话框。
注意 如果在“异常助手”出现时未打开 XAML 视图,请关闭**“仅我的代码”**调试选项。 有关更多信息,请参见如何:单步执行“仅我的代码”。
后续步骤
- 还可以使用**“错误列表”**窗口在设计时查看 XAML 分析错误。 有关更多信息,请参见 XAML 错误和帮助。