WPF开发小技巧希望能帮助小伙伴们在WPF项目开发中可以更好的开发和调试程序一、WPF开发调试终端方式一修改项目输出类型推荐1.双击WPF项目中的启动项目跳转.csproj文件2.将OutputType从WinExe改为Exe强制应用程序附带控制台窗口方式二动态创建控制台窗口代码控制1.在App.xaml.cs类中增加代码通过AllocConsoleAPI动态附加控制台窗口适合需要按条件显示终端的场景。代码如下2.注意事项在项目启动前需在App.xaml中移除StartupUri,改为通过代码启动控制台窗口。启动调试终端运行结果二、WPF软件窗口调试顶部工具栏WPF软件窗口调试顶部工具栏的打开和关闭操作打开状态关闭流程工具栏 —— 选择 —— 调试 —— XAML热重载 —— 取消选中“启用应用内工作栏”三、WPF应用程序配置方式打开XAML入口文件APP.xaml如果需要扩展功能可以添加第三方组件库、资源字典、样式、以及多种主题支持等。它相当于将 WPF UI 库的所有默认样式、模板、颜色和资源合并到你的应用程序中。通常放在App.xaml的Application.Resources中确保整个程序都能使用 WPF UI 的美观样式。例如配置WPF UI第三方UI组件库1.下载WPF-UI NuGet包2.在APP.xaml文件中配置应用程序的全局资源引入了WPF-UI第三方UI组件库设置了应用程序级资源字典合并了WPF-UI的主题字典ThemesDictionary并指定使用Light主题使用外部命名空间(ui),增加应用程序使用了一些外部UI组件或风格以增强用户界面的美观性和可用性。3.配置WPF-UI第三方组件库后可以在窗口或页面中引用ui第三方组件配置WPF-Button事件触发器1.下载Microsoft.Xaml.Behaviors.Wpf NuGet包2.在APP.xaml文件中配置应用程序的全局资源引用触发器组件设置按钮触发器事件。3.配置触发器组件后可以在窗口和或页面中引用触发器组件4.实现按钮触发器功能鼠标进入、鼠标离开、鼠标点击、鼠标松开等。View:ViewModel:public ICommand MouseEnterCommand { get; set; }//鼠标进入public ICommand MouseLeaveCommand { get; set; }//鼠标离开public ICommand MouseClickCommand { get; set; }//鼠标点击public ICommand MouseReleaseCommand { get; set; }//鼠标松开public MainWindowViewModel(){MouseEnterCommand new RelayCommand(OnMouseEnter);MouseLeaveCommand new RelayCommand(OnMouseLeave);MouseClickCommand new RelayCommand(OnMouseClick);MouseReleaseCommand new RelayCommand(OnMouseLoosen);}private void OnMouseEnter(){Console.WriteLine(鼠标进入);}private void OnMouseLeave(){Console.WriteLine(鼠标离开);}private void OnMouseClick(){Console.WriteLine(鼠标点击);}private void OnMouseLoosen(){Console.WriteLine(鼠标松开);}四、WPF连接摄像操作通过连接摄像头并在程序上展示视频流实时画面配置添加WPF程序集1.添加程序集引用 WindowsFormsIntegration.dll。右键点击 “依赖项” 选择 “添加项目引用” 添加WindowsFormsIntegration.dll程序集到项目中。2.在窗口引用程序集WindowsFormsIntegration.dll并在XAML文件中通过xmlns声明定义WinFormHost。配置显示视频流代码实现3.实现展示视频流画面实时显示在WPF应用程序中WinFormHost:WindowsFormsHost元素用于在WPF嵌入Windows Forms控件。WinFormHost:WindowsFormsHost这是WPF中用于承载Windows Forms控件的容器。View:x:Name这是WPF中的标识符允许你在代码后面引用这个控件。通过这个名称可以在C#代码中访问pictureBoxHost进行进一步操作。View.cs:将pictureBox控件作为子控件添加到WindowsFormHost中确保代码pictureBox可以正确渲染和显示在WPF窗口中。ViewModel:使用CancellationTokenSource来控制图像捕捉和显示的循环主要用于从视频源读取帧如摄像头调整图像大小并在PictureBox控件中显示。重点PictureBox.SizeMode设置PictureBox的显示模式为缩放或拉伸使图像适应控件的大小。PictureBoxSizeMode.Zoom:设置图像的大小递增或递减原有的大小比例。PictureBoxSizeMode.StretchImage:设置PictureBox中的映像被拉伸或收缩以适合的大小。五、WPF添加窗口UI背景图片代码实现运行报错IOException: 找不到资源“image/bg1.png”排查解决步骤1.检查并修改“生成操作”属性最常见原因选中项目中bg1.png文件 —— 查看属性窗口 ——找到生成操作 ——设置为“资源”URl必须使用完成Pack URl设置为内容URl不能使用pack://application:,,,为前缀2.验证文件路径与大小写确认文件夹名称确实是Image而不是image或Images。确认文件名确实是bg1.png而不是BG1.PNG.3.清理并重新生成项目清楚解决方案 ——重新生成解决方案。有时Visual Studio的资源存会导致旧路径残留。