![](https://img-blog.csdnimg.cn/20190927151043371.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
WPF杂谈
WPF的各位知识杂谈
浪子花梦
江苏淮安人,二十有三,偶然得知编程二字,至此五年有余,日渐憔悴。
展开
-
WPF将.dll文件嵌入到.exe文件中
有的时候我们发现一个 .exe文件带着许多的 .dll 文件,觉得这是一个很麻烦的事情,使用下面的方式可将 .dll 嵌入到 .exe文件中 . . .首先,我们准备一个 .dll 文件(WPF 用户控件库文件):文件类型如下所示:当我们点击这个按钮时会弹出一个对话框 . . .下面我们在 MainWindow 中使用这个用户控件:接下来我们需要做的就是将 .dll 嵌入到 .exe 中,我们需要做的有件事:1)在 csproj文件中引入下面这段代码:2)在 App.xaml.cs原创 2020-08-02 17:38:07 · 1792 阅读 · 0 评论 -
WPF使用小技巧 从窗口A中 获取/设置 B窗口中的值
实现的效果如下所示:首先,主窗口中的布局如下所示:当我们点击打开新窗口时,弹出一个Window1窗口,该窗口如下所示:当我们点击添加数据窗口时,对主窗口MainWindow中的listBox元素添加一个新数据 . . .首先, 主窗口的按钮点击事件处理器如下所示:Window1的按钮点击事件处理器如下所示:...原创 2020-08-02 15:08:29 · 1137 阅读 · 0 评论 -
WPF简单易懂的使用定时器更新UI界面
使用定时器制作一个显示时间的效果,如下所示:UI布局如下所示:<Grid> <Grid.RowDefinitions> <RowDefinition /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <TextBlock x:Name="txt" FontSize="100"原创 2020-08-02 14:10:40 · 1232 阅读 · 0 评论 -
WPF使用BackgroundWorker进行单独线程操作
之前使用线程池来进行异步计算,示例如下所示:WPF从非UI线程中更新UI元素WPF取消一个线程的执行此文章还使用了BackgroundWorker 中的进度条事件,效果如下所示:点击取消按钮后,效果如下所示:XAML布局如下所示:<StackPanel> <StackPanel Orientation="Horizontal"> <Border Margin="10" .原创 2020-08-02 13:16:22 · 685 阅读 · 0 评论 -
WPF取消一个线程的执行
此文使用上文的案例,链接如下所示:WPF从非UI线程中更新UI元素添加一个按钮,用于点击时取消线程的执行:声明一个 CancellationTokenSource 类型的对象,这个对象用于发送一个信号,如下所示:private CancellationTokenSource tokenSource = null;按钮点击时的方法代码如下所示,如果这个对象被实例了,那就发送一个取消的信号:private void Button_Click1(object sender, RoutedEv.原创 2020-08-01 13:14:16 · 2521 阅读 · 0 评论 -
WPF从非UI线程中更新UI元素
有时候我们需要更新UI元素上的数据,但是这个数据计算的时候非常的长,这就给ui线程,这个程序带来了 “冻结” . . .例如我们先准备下面的UI:当我们点击按钮时,计算出 1 到 1y 之间的偶数与奇数的个数,很明显这个计算量非常的大,计算的代码如下所示:private void Calculator(int from, int to){ tmpJsValue = 0; tmpEsValue = 0; for (Int32 i = from; i <原创 2020-08-01 12:25:22 · 2108 阅读 · 0 评论 -
WPF调试中的热重载使用与可视化树和属性资源管理器的使用
在调试选项中勾选下面的选项:随便写点UI元素:运行程序展开可视化对,查看如下所示:上面还有一些其它的工具使用 . . .展开属性资源管理器:可以在里面加一些属性,类似于测试,实际上程序并没有改变,如下所示:我们再次运行程序时,这个UI是没有变化的,但是我们可以通过热重载实时的改变UI,如下所示:直接添加属性,不需要重新的运行程序,即可看见效果 . . ....原创 2020-08-01 11:13:58 · 2153 阅读 · 0 评论 -
WPF利用消息解决ViewModel与View之间的耦合性
我们先来看一下没有解耦合之前的代码,如下所示:我们在ViewModel 中的一个命令响应方法中,打开一个窗口(View),这就产生了耦合性,因为这样使 ViewModel与View之间谁也离不开谁,当我们把这个FindWindow窗口从项目中删除时,将产生一个很直观的问题 —— 编译错误,所有我们就需要一个事物来解除耦合性,这个技术就是消息的使用 . . .首先,我们需要几个类来实现这个消息功能,如下所示:其中画紫色框框表示消息的类型,就是说这个消息是什么 . . .需要这些类型的源码的小伙伴可原创 2020-07-26 15:39:39 · 821 阅读 · 1 评论 -
WPF使用成熟的命令系统(带参数)
前文不需要带参数的成熟命令:WPF使用成熟的命令系统需要的五个类如下所示:定义分别如下所示:IExecuteWithObject 接口:public interface IExecuteWithObject{ object Target { get; } void ExecuteWithObject(object parameter); void MarkForDeletion();}IExecuteWithObjectAndResult 接口:public原创 2020-07-26 10:31:51 · 1162 阅读 · 0 评论 -
WPF将窗口设计成对话框模式
将窗口设计成对话框的样子方式比较多,很常见的方法就是使用XAML代码来修改样式,而此这边将讨论如何利用WIN32API 实现这个对话框 . . .我们刚开始的样子是这样的:改过的样子如下所示:先准备Win32API:后台代码重写方法:OnSourceInitialized 即可:...原创 2020-07-25 19:08:14 · 834 阅读 · 0 评论 -
WPF使用内置命令与注册命令
WPF 内置了许多有用的命令,而这些命令和有的类型已经产生了关联,比较TextBox 与 复制、粘贴等命令关联,下面我们看看如何使用这种内置命令 . . .我们在编辑这个菜单里面使用内置命令,如下所示:这些命令能够响应 TextBox文本框类型,而他们是有默认快捷键的,如下所示:所以我们可以利用这些命令对文本框中的文本作出一些基本的操作 . . .而有的内置命令(或者其它命令)是文本框没有激活的,需要我们自动来将命令注册到 TextBox中,比如有的命令:查找(...原创 2020-07-25 18:59:35 · 780 阅读 · 0 评论 -
WPF使用鼠标滚轮绑定命令
自定义 MouseGesture类的派生类,取名为 MouseWheelGesture,代码实现如下所示:class MouseWheelGesture : MouseGesture{ public MouseWheelGesture() : base(MouseAction.WheelClick) { } public MouseWheelGesture(ModifierKeys modifierKeys) : base(MouseAction.WheelClick, modifier原创 2020-07-24 12:24:22 · 913 阅读 · 0 评论 -
WPF使用成熟的属性自动更新代码
创建一个类名为 ObservableObject的类,其中的代码如下所示:using System;using System.Collections.Generic;using System.ComponentModel;using System.Linq;using System.Linq.Expressions;using System.Reflection;using System.Runtime.CompilerServices;namespace Notepad_WPF.Help原创 2020-07-24 09:32:17 · 1338 阅读 · 0 评论 -
WPF中安装XAML代码排版插件
1)点击扩展按钮2)在管理扩展中搜索 XAML Styler3)安装过后 按Ctrl + s 即可:原创 2020-07-24 08:46:44 · 815 阅读 · 0 评论 -
WPF在XAML中给命令绑定快捷键
假如我们需要给 Shift+Ctrl+N 绑定快捷键有两种方式绑定命令:1)使用 Gesture:2)使用 Key 和 Modifiers原创 2020-07-23 16:47:56 · 928 阅读 · 0 评论 -
WPF使用成熟的命令系统
需要的三个类如下所示:对应的代码分别如下所示,直接Copy即可(只需要 注意一下命名空间):RelayCommand 命令类:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Input;namespace Notepad_WPF.Helpers{ public c原创 2020-07-23 12:30:28 · 498 阅读 · 1 评论 -
WPF制作贪吃蛇小游戏
初学WPF,需要一个小程序来锻炼自己,而贪吃蛇是每一个小白(包括我自己)必学的经典案例,此文就来介绍一下,接近完美的贪吃蛇是如何制作的 . . .学习源于赵庆明老师的课程(腾讯课堂)此文将只对游戏重要的部分进行讲解, 完整源码可在 GitHub 中查看:GitHub --> Gluttonous-Snake效果效果如下:其中这个游戏是有声音(吃到东西的声音,游戏结束读取分数的声音). . .各种音效可到 爱给网 中下载,完全免费 . . .比如吃东西的声音、游戏结束的声音(没有.原创 2020-05-17 16:11:41 · 2576 阅读 · 2 评论 -
WPF制作随机抽奖小程序
前些天学完了一些WPF的基础知识,闲来无事做了一个随机抽奖的小程序,代码比较简单,核心的代码只有七行,其它的都是一些布局上的事情 . .希望这个例子,能够帮助你, 大佬可以指点指点我, ^ _ ^.首先我们先来看一看这个小程序是什么样子的,这样大家才有耐心看嘛,哈哈效果如下图所示:这个轮盘有点丑哈 ~,但是我用 Blend设计了几个小时,属实太菜 . . .当我们点击中心的 ...原创 2020-04-07 16:48:41 · 3120 阅读 · 3 评论