![](https://img-blog.csdnimg.cn/20191223164414200.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
WPF
WPF相关
碎碎念的安静
.Net小白一枚
展开
-
WPF绘图---Canvas中Polygon屏幕居中显示
WPF绘图---Canvas中Polygon屏幕居中显示。原创 2023-12-01 09:46:50 · 612 阅读 · 1 评论 -
LibVLCSharp在WPF中无法响应鼠标事件
问题原因官方LibVLCSharp库的VideoView在WPF中其实还是使用的Win32控件WPF控件会被Win32控件遮挡,所以无法响应鼠标事件。解决办法在VideoView控件上添加一层透明的遮罩层用以响应鼠标事件<vlc:VideoView x:Name="vlcView" IsEnabled="False" Panel.ZIndex="1" ></vlc:VideoView><!--添加透明遮罩层,用来响应鼠标事件--><StackPanel原创 2021-09-23 11:25:55 · 1165 阅读 · 0 评论 -
WPF Image控件绑定后文件被占用问题
1.问题描述Image控件的Source绑定后图片被占用,此时无法删除或在别处使用此图片,会导致报错。解决方法:通过转换的方式,不直接将图片路径绑定到Source,而是将需要绑定的图片读取字节并释放,创建BitmapImage对象,使用读取的字节初始化BitmapImage。2.代码xaml代码<Window.Resources> <comm:ImageConvert x:Key="string2Img"/></Window.Resources>&原创 2021-06-23 11:30:25 · 1012 阅读 · 0 评论 -
WPF使用PictureBox
一、添加引用按照下图添加相关引用二、代码实现1.Xaml<Window x:Class="PictureBoxInWPF.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.micros原创 2021-06-09 16:08:14 · 5948 阅读 · 0 评论 -
WPF使用VLC播放视频
本文使用的是VLC的官方库还有另外一种方法是使用Vlc.DotNet,Git地址:https://github.com/ZeBobo5/Vlc.DotNet一、添加引用在Nuget中搜索下载二、代码1.Xaml添加引用xmlns:vlc="clr-namespace:LibVLCSharp.WPF;assembly=LibVLCSharp.WPF"添加控件<vlc:VideoView x:Name="vlcView"/>2.后台//初始化vlcCore.Initia原创 2021-06-09 15:39:11 · 1243 阅读 · 0 评论 -
Prism8.0(二):数据绑定与命令
前言Prism默认的绑定规则是Views文件夹内的界面(如Test.xaml)查找ViewModels文件夹中对应的VM(如TestViewModel.xaml), 所以ViewModel的后缀必须正确,如需要修改默认规则,请在App中重写方法ConfigureViewModelLocator如果需要对自定义ViewModel进行绑定,请在ConfigureViewModelLocator方法中加入代码//Test为自定义的ViewModel类ViewModelLocationProvider.Re原创 2021-02-05 16:49:25 · 4208 阅读 · 0 评论 -
Prism8.0(一):项目搭建
Prism是用于在WPF和Xamarin Forms中构建松耦合,可维护和可测试的XAML应用程序的开源框架。方法一:手动创建创建一个.Net Framework或者.Net Core的WPF项目,注意最新的8.0在仅支持.Net Framework 4.6.2及以上版本。Prism默认支持两种依赖注入容器DryIOC和Unity,这里直接使用Unity,在NuGet包管理器中搜索Prism.Unity。修改App.xaml如下,使用PrismApplication重写方法:public p原创 2021-02-05 14:27:38 · 1557 阅读 · 1 评论 -
WPF解决Popup窗口随动及显隐
使用自定义Popup控件public class CusPopup : Popup{ /// <summary> /// 应用状态 /// </summary> private bool? _appliedTopMost; /// <summary> /// 是否已经加载 /// </summary> private bool _alreadyLoaded; /// <summa原创 2020-08-29 15:20:46 · 1535 阅读 · 0 评论 -
WPF在新线程上打开窗体
当WPF应用程序运行时,默认会创建一个UI主线程(因为至少需要一个),并在该UI线程上启动消息循环。直到消息循环结束,应用程序就随即退出。那么,问题就来了,能不能创建新线程,然后在新线程上打开一个新窗口实例?这样可以让不同窗口运行在不同的线程上,一定程度上可以相互“独立”。其实呢,完全的独立运转似乎不太可能,毕竟嘛,线程是抢占 CPU 时间片的,即各个线程间是交替运行的,现在处理器基本是N核的,可以结合并发一起用(在.net 中,使用 Task 可以自动并发)。不管怎么说吧,对UI的响应能力应该能有所改善转载 2020-08-06 11:29:19 · 972 阅读 · 0 评论 -
WPF全屏
使用扩展类的方式设置全屏扩展类代码:public static class FullScreenHelper{ private static Window _fullWindow; private static WindowState _windowState; private static WindowStyle _windowStyle; private static bool _windowTopMost; private static ResizeMod转载 2020-06-19 18:27:32 · 356 阅读 · 0 评论 -
WPF多线程更新UI方法
1.问题描述在开发过程中,我们有时候需要使用多线程来完成某些特定的功能,如果想要在子线程中更新UI元素(例如进度条),就会有一个线程安全性问题,因为进度条是由主线程创建出来的。这时候程序就会报错“调用线程无法访问此对象,因为另一个线程拥有该对象。”2.解决方法通常使用Dispatcher来实现Task.Run(() =>{ try { //耗时操作 //Do Some Thing... } catch (Exception ex) { MessageBox.Show(e原创 2020-05-18 15:11:21 · 1531 阅读 · 0 评论 -
WPF TextBox仅输入数字(含小数)
TextBox(包含一个提示的样式):<TextBox Width="200" Height="40" InputMethod.IsInputMethodEnabled="False" PreviewKeyDown="TextBox_PreviewKeyDown" PreviewTextInput="TextBox_PreviewTextInput" DataObject...原创 2020-04-20 10:50:33 · 1982 阅读 · 0 评论 -
WPF TreeView选择事件执行多次
TreeView的选择事件不断向上传递,子节点执行事件后父节点也会触发,这是由于从主窗口窃取了焦点。为了避免这种情况,我们要做的就是简单地延迟对我们代码的调用,即我们需要在SelectedItemChanged中执行的MyFunction()。这是一种解决方法,它会延迟打开新窗口的调用,直到项目选择代码完成为止。private delegate void NoArgDelegate(); ...翻译 2019-12-23 15:54:56 · 835 阅读 · 0 评论