WPF开发小技巧
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的资源存会导致旧路径残留。
