- WPF 教程
- WPF - 首页
- WPF - 概述
- WPF - 环境设置
- WPF - Hello World
- WPF - XAML 概述
- WPF - 元素树
- WPF - 依赖属性
- WPF - 路由事件
- WPF - 控件
- WPF - 布局
- WPF - 布局嵌套
- WPF - 输入
- WPF - 命令行
- WPF - 数据绑定
- WPF - 资源
- WPF - 模板
- WPF - 样式
- WPF - 触发器
- WPF - 调试
- WPF - 自定义控件
- WPF - 异常处理
- WPF - 本地化
- WPF - 交互
- WPF - 2D 图形
- WPF - 3D 图形
- WPF - 多媒体
- WPF 有用资源
- WPF - 快速指南
- WPF - 有用资源
- WPF - 讨论
WPF - 命令行
命令行参数是一种机制,用户可以在执行 WPF 应用程序时向其传递一组参数或值。这些参数对于从外部控制应用程序非常重要,例如,如果要从命令提示符打开 Word 文档,可以使用此命令“C:\> start winword word1.docx”,它将打开word1.docx文档。
命令行参数在 Startup 函数中处理。以下是一个简单的示例,演示如何将命令行参数传递给 WPF 应用程序。让我们创建一个名为WPFCommandLine的新 WPF 应用程序。
将一个文本框从工具箱拖到设计窗口。
在这个例子中,我们将一个 txt 文件路径作为命令行参数传递给我们的应用程序。
程序将读取 txt 文件,然后将所有文本写入文本框。
以下 XAML 代码创建一个文本框并用一些属性初始化它。
<Window x:Class = "WPFCommandLine.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:WPFCommandLine" mc:Ignorable = "d" Title = "MainWindow" Height = "350" Width = "525"> <Grid> <TextBox x:Name = "textBox" HorizontalAlignment = "Left" Height = "180" Margin = "100" TextWrapping = "Wrap" VerticalAlignment = "Top" Width = "300"/> </Grid> </Window>
- 现在,像下面这样在 App.xaml 文件中订阅 Startup 事件。
<Application x:Class = "WPFCommandLine.App" xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local = "clr-namespace:WPFCommandLine" StartupUri = "MainWindow.xaml" Startup = "app_Startup"> <Application.Resources> </Application.Resources> </Application>
下面是在 App.xaml.cs 中 app_Startup 事件的实现,它将获取命令行参数。
using System.Windows; namespace WPFCommandLine { /// <summary> /// Interaction logic for App.xaml /// </summary> public partial class App : Application { public static string[] Args; void app_Startup(object sender, StartupEventArgs e) { // If no command line arguments were provided, don't process them if (e.Args.Length == 0) return; if (e.Args.Length > 0) { Args = e.Args; } } } }
现在,在 MainWindow 类中,程序将打开 txt 文件并将所有文本写入文本框。
如果发现某些错误,程序将在文本框中显示错误消息。
using System; using System.IO; using System.Windows; namespace WPFCommandLine { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); String[] args = App.Args; try { // Open the text file using a stream reader. using (StreamReader sr = new StreamReader(args[0])) { // Read the stream to a string, and write // the string to the text box String line = sr.ReadToEnd(); textBox.AppendText(line.ToString()); textBox.AppendText("\n"); } } catch (Exception e) { textBox.AppendText("The file could not be read:"); textBox.AppendText("\n"); textBox.AppendText(e.Message); } } } }
编译并执行上述代码时,它将生成一个带有文本框的空白窗口,因为此程序需要命令行参数。因此,Visual Studio 提供了一种简单的方法来使用命令行参数执行应用程序。
右键单击解决方案资源管理器中的 WPF 项目,然后选择属性,将显示以下窗口。
选择“调试”选项,并在“命令行参数”中写入文件路径。
创建一个名为 Test.txt 的 txt 文件,并在其中写入一些文本并将其保存到任何位置。在本例中,txt 文件保存在“D:\”硬盘驱动器中。
保存项目中的更改,然后编译并执行应用程序。您将在文本框中看到程序从 Test.txt 文件读取的文本。
现在让我们尝试将计算机上的文件名从Test.txt更改为Test1.txt,然后再次执行程序,您将在文本框中看到错误消息。
我们建议您执行上述代码并按照所有步骤成功执行应用程序。