- 博客(94)
- 资源 (7)
- 收藏
- 关注
原创 WPF 子窗口跟随主窗口移动
由于LocationChanged的事件参数中没有记录历史的窗口位置信息,因此为了得到当前窗口与移动之前的窗口位置变化情况,需要添加lastTop和lastLeft记录上一次窗口位置情况,然后以此来计算偏差时。
2025-03-10 09:52:10
250
原创 WPF TextBox 添加范围验证
添加范围验证,若出现范围错误添加信息捕捉使用到技术:使用**ValidationRules**实现范围验证,当范围出现错误时,可以通过触发器**Validation.HasError=True**设置自定义错误样式。使用Behavior技术捕捉所有验证出错的消息,用于检查界面是否出错,实现行为捕获。
2023-07-04 23:51:15
681
原创 WPF 控件设计艺术[按钮篇六]
三、按钮篇(六)Windows系统设置主页按钮-WindowsSettingsHomeButton按钮由图标、主题文本和描述文本组成,图标与文本颜色分开,默认背景为白色或者透明。来,咱们看看Windows Setting里面得样子吧,如下图所示:接下来我们分析下,按钮的效果:鼠标放上去,显示背景框鼠标按下,整体有收缩感觉(模糊化)由于按钮中的元素与我们之前使用的按钮样式一致,因此我们本次按钮样式设计也是基于DescIconButton自定义按钮实现的,首先还是将他的定义贴出来:
2021-01-13 22:48:33
1715
2
原创 WPF 控件设计艺术[按钮篇五]
三、按钮篇(五)带描述图文按钮-WithDescIconTextButton按钮内容同时存在图标、主要文本以及对按钮功能的描述补充文本,并且图标、主要文本和描述文本都能根据不同功能变化。我们看下我们参考的按钮的样子吧,如下图所示:接下来我们分析下,按钮的效果:默认情况下,背景为透明鼠标放上去,有一个灰色背景色鼠标按上去,背景色加深,图标和文本加粗在实现时,我们同样使用自定义控件,继承之前的IconButton 并添加添加对应的Description依赖属性即可,DescIco
2021-01-10 18:25:14
936
原创 WPF 控件设计艺术[按钮篇四]
三、按钮篇(四)图文合并按钮-IconTextButton同样的,我们找到我们需要设计的按钮样式,如下图左上角的主页按钮哦来分析一下吧,我们通过使用WindowsSettings中的这个面板的按钮,可以分析出如下特点:按钮内容同时存在图标和文本,并且图标和文本都能根据不同功能变化。默认情况下,背景为透明鼠标放上去,有一个灰色背景色鼠标按上去,背景色加深,图标和文本加粗由于该按钮由一个图标和文本组成,因此我们就是用上个样式定义的IconButton类就可以了,使用IconDa
2021-01-09 11:51:52
995
原创 WPF 控件设计艺术[按钮篇三]
三、按钮篇(三)纯图标按钮-IconOnlyButton同样的,我们找到我们需要设计的按钮样式,如下图左上角的按钮哦来分析一下吧,我们通过使用WindowsSettings中的这个面板的按钮,可以分析出如下特点:按钮内容为图标,以及通过自定义控件实现默认情况下,背景色为白色(无背景)鼠标放上去,会有一个背景色鼠标按下,背景变为蓝白色由于该按钮添加了一个图标,该属性我们想通过依赖属性来定义,这样我们就可以再XAML或者其他地方进行设置了。所以我们首先在项目中添加如下的Icon
2021-01-09 11:37:46
1479
原创 WPF 控件设计艺术[按钮篇二]
三、按钮篇(二)带背景按钮-BackdropButton按照前面的步骤,创建一个按钮的样式模板,如下图所示。找到我们要设计的带有背景效果按钮。在窗体中新建一个按钮,然后按照之前的方式创建模板添加颜色资源、设置模板、设置触发器,代码如下。 <SolidColorBrush x:Key="Button.Static.Background" Color="#FFC3C3C3"/> <SolidColorBrush x:Key="Bu
2021-01-09 11:30:56
1229
原创 WPF 控件设计艺术[按钮篇一]
三、按钮篇(一)纯文本按钮-TextOnlyButton创建一个Button按钮,设置宽高右键设计窗口中的按钮,找到编辑模板的编辑副本,并点击它。如下图所示。此时会弹出一个对话框,提示我们选择创建资源名称和定义位置,如下图所示。我们可以不用管,但为了方便,我们设置一下名称TextOnlyButton,然后点击确定。此时,会在我们MainWindow中的Resources中创建一些资源信息,如下图所示。我们可以简单将上面的资源文件划分为三类,如下图所示,分别是:焦
2021-01-09 11:13:58
2707
原创 WPF 控件设计艺术[开篇]
WPF 控件设计艺术——样式、模板、触发器、数据绑定WPF 控件设计艺术——样式、模板、触发器、数据绑定:围绕WPF控件设计,从样式、模板、触发器和数据绑定触发,引导初学者快速设计和使用WPF控件设计富有个性的WPF控件。一、引言内容本次开发主要围绕WPF中现有的控件,其一:对控件属性等信息含义讲解;其二:对控件的基本使用演示;其三:以及如何根据现有控件设计具有自己特色的控件。目的引导初学者(会C#并且稍微了解WPF)学习如何使用WPF控件,提高WPF应用软件开发效率。记录成长,可以在自己目前热
2021-01-09 11:02:03
1835
原创 C# 字符串中去掉换行符、间隔符等特殊字符
C# 字符串中去掉换行符、间隔符等特殊字符1.String.Replace方法在C#中替换字符串中的字符我们可以使用String提供的Replace方法。 string s = "sdsd"; string ss = s + Environment.NewLine; var eeee = ss.Replace(Environment.NewLine, ""); var nes = ss.Repla
2020-10-24 17:39:00
8192
原创 C# 获取本机网络信息
C# 获取本机网络信息IP MAC DNS 等信息获取 private void GetLocalInfo() { textBlock1.Text = ""; StringBuilder sb = new StringBuilder(); NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces(); //
2020-09-29 18:21:26
1068
原创 C# 死循环等待方式
C# 死循环等待方式在工业软件、上位机等需要对硬件设备进行实时通信的开发过程中,我们经常会使用死循环来循环读取缓冲区的数据。如下所示 private void Receive() { while (true) { //返回接收缓冲区中尚未被读取的帧数 UInt32 num = VCI_GetReceiveNum(devType, devIndex, devChannel);
2020-08-18 21:36:43
6508
1
原创 WPF 鼠标在控件上晃动,CPU占用高,界面不刷新问题
WPF 鼠标在控件上晃动,CPU占用高,界面不刷新问题首先,在MVVM模式下,我们刷新界面的方式工作通过属性绑定转移到更新绑定数据源。此时,我们通常会使用子线程去执行一些查询等耗时任务,执行完成之后,直接更新数据源。或者开一个定时器(System.Threading.Timer)去实时更新我们的绑定数据源。一般情况下,我们的界面更新是很正常的。但是,当我们更新的数据源很多,更新频率很快时。晃动我们鼠标(在控件面板上移动)时,有时会发现一个有趣却又很苦逼的现象——鼠标晃动导致界面更新卡住了。我最开始遇
2020-07-22 17:46:55
1483
原创 WPF Popup Using
WPF Popup Using示例Popup控件由两部分组成:呈现弹起内容的Popup控件和触发该Popup的控件组成。下面我们以toggleButton和Popup组合起来做一个浮窗效果。<Window x:Class="Deamon.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com
2020-06-02 19:49:18
683
1
原创 WPF ComboBox Styles
WPF ComboBox Styles第一种样式<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <!--ComboBox--> <!--ComBoBox项选中背景色-->
2020-05-31 19:32:51
921
原创 WPF Slider Styles
WPF Slider Styles第一种样式- <Style x:Key="SliderRepeatButtonStyle" TargetType="{x:Type RepeatButton}"> <Setter Property="OverridesDefaultStyle" Value="true"/> <Setter Property="IsTabStop" Value="false"/> <Sett
2020-05-31 18:52:28
734
原创 WPF TabControl 数据绑定
WPF TabControl in Binding’s world首先,TabControl是间接继承自ItemControl的控件,因此可以像ItemControl那样自如的使用。自此,我们知道了ItemControl的派生控件有:ItemControl–>Selector–>ListBoxItemControl–>Selector–>ListBox–>ListViewItemControl–>Selector–>ComboBoxItemControl
2020-05-22 20:03:17
6714
原创 WPF TabControl Styles
WPF TabControl Styles水平使用的TabControl效果:样式资源 <!-- 顶部TabControl控件样式 --> <SolidColorBrush x:Key="TabItem.Static.Background" Color="White"/> <SolidColorBrush x:Key="TabItem.Static.Border" Color="#ACACAC"/>
2020-05-22 19:58:42
1991
原创 WPF 加载摄像机视频
WPF 加载摄像机视频WPF 显示摄像机可以借助AForge进行实现视频显示和数据录制。视频显示1.引入AForge库文件NUGet导入AForgeAForge.VedioAForge.Vedio.DirectShow2.设置UI添加一个Image控件,用于视频呈现。<Window x:Class="Rxbit.Views.Scane.CameraWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/
2020-05-15 19:39:46
1539
原创 C# 文件操作笔记
C# 文件操作笔记找到当前路径下文件扩展名相同的文件 /// <summary> /// 找到当前路径下文件扩展名相同的文件 /// </summary> /// <param name="path">路径</param> /// <param name="ext">扩展名</param> /// <returns></return
2020-05-15 19:38:28
279
原创 C# 从补码中获取有符号数的实际数值
C# 从补码中获取有符号数的实际数值原理计算机存储数据时,默认是存储数据的补码。有符号的数粗存在符号位(最高位)。这里就会提到原码、反码、补码的概念。原码:用符号位和数值表示带符号数,正数的符号位用“0”表示,负数的符号位用“1”表示,数值部分用二进制形式表示。反码:正数的反码与原码相同,负数的反码为对该数的原码除符号位外各位取反。补码:正数的补码与原码相同,负数的补码为对该数的原码除...
2020-05-01 18:27:11
1924
原创 WPF DataGrid的列标题样式设计
WPF DataGrid的列标题样式设计能够换行1.定义列样式 <DataTemplate x:Key="HeaderTemplateCenterAlign"> <Border> <TextBlock TextWrapping="Wrap" Text="{Binding Path=Content, Rel...
2020-04-28 19:11:55
1455
原创 WPF ItemControl 相关的数据源排序显示
WPF ItemControl 相关的数据源排序显示直接操作绑定的数据源,例如将新增的元素显示到最前头,可以在添加数据源时,使用Insert函数,直接添加到集合中的首个位置。如下所示。using System.Collections.Generic;// 添加新数据时LaneTriggerInfoViewModel.Singleton.TrpTriggers[lane.Key - 1]...
2020-04-28 19:06:36
566
原创 WPF MenuItem In Binding's world
WPF MenuItem In Binding’s world自定义Menu样式<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/...
2020-04-24 20:05:51
571
原创 WPF 坐标投影
WPF 坐标投影有些时候,我们需要自己来制作一个画板,并在画板上绘制我们想要的内容(画图、状态图、统计图等)。此次给大家介绍一下自制画板。建立画板建立一个画板,并在画板中建立一个绘图区域TragetsCanvas,并用10X10px的小方格进行分割,添加刻度画板ScaleCanvas,刻度画板与绘图区域之间存在一些间隔,这些间隔用于填充坐标等分割信息。 <Canvas Width="...
2020-04-22 20:42:03
872
原创 Git 本地使用,结合VS
Git 本地使用,结合VS有些时候,我们需要通过Git来做本地代码管理,替代自己通过手动创建日志、保存版本文件。通过Git可以很好的记录修改和回退版本。1.安装Githttps://git-scm.com/downloads2.常用命令3.创建一个本地仓在当前文件目录下新建一个本地仓wemove,并初始化。命令分别如下$ mkdir wemove$ cd wemove$ pw...
2020-04-18 18:30:58
2479
原创 WPF 切换控件界面库资源
WPF 切换控件界面库资源在实际项目开发中,我们经常是使用别人开发好的界面库。但是不同界面库涉及的控件和对控件的默认样式存在偏差。为了能在不同的项目中使用多种界面库。最开始没有想过,觉得不好实现。但是实际来使用的时候,发现非常简单。本次示例以MaterialDesignUI和ModernUI切换为例。NuGet界面库程序包分别添加MaterialDesignThemes和ModernUI....
2020-04-17 19:40:36
1194
原创 WPF 自定义界面语言包
WPF 语言包1定义语言资源在Luanguage文件夹下添加StringResource.en-US.xaml与StringResource.zh-CN.xaml分别定义语言为英语和中文的语言资源文件。StringResource.en-US.xaml<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/...
2020-04-12 21:03:58
712
原创 C# 字节(数组)与位之间的计算
C# 字节(数组)\16\32\64…位数据与位之间的计算运算符介绍运算名称运算符号左移<<右移>>与&或|非^截取数据例如: UInt32 mini = 0x000ED0FF; UInt16 low16 = (UInt16)(mini & 0xFFFF); UInt16 hight16...
2020-04-12 21:02:16
4261
原创 WPF 枚举类型与ComboBox绑定
WPF 枚举类型与ComboBox绑定通过枚举类型建立集合很多时候,我们需要直接获取枚举值的值,将其绑定到ComboBox之类的控件中。因为我们知道,ComboBox的ItemsSource是一个集合,因此我们需要将枚举值变成一个集合,然后绑定到ComboBox中,可以通过绑定SelectedItem/SelectedValue实现获取选中元素。枚举定义 public enum Azimu...
2020-04-03 20:06:27
6241
原创 WPF 语言包自定义与使用
WPF 语言包1定义语言资源在Luanguage文件夹下添加StringResource.en-US.xaml与StringResource.zh-CN.xaml分别定义语言为英语和中文的语言资源文件。StringResource.en-US.xaml<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/...
2020-04-03 20:03:15
933
原创 C# 日志文件存储
C# 日志文件存储思路:直接对txt文件内容进行存储即可。存储时,手动设置存储内容。核心程序 /// <summary> /// 日志系统 /// </summary> public class LogAct { /// <summary> /// 普通日志 /...
2020-03-24 08:46:36
1107
原创 WPF 自定义窗口笔记
WindowChrome最大化是否保留任务栏在使用WindowChrome作为自定义窗口拖拽等操作支持功能时,我们可以很轻松的自定义我们窗体。通过双击WindowChrome的CaptionHeight范围内即可实现窗体的最大化。在最大化时,根据项目需求,有些应用需要覆盖任务栏,而另外一些需求是保留任务显示。那么怎么在WindowChrome支持下实现这两个不同的需求。答案是比较简单,就是...
2020-03-22 13:44:36
497
原创 C# 反射获取对象的属性名和属性值
Type t = Farsightedgo.Localization.LanguageManager.Instance.GetType();//获得该类的Type foreach (PropertyInfo pi in t.GetProperties()) { if (pi.Name == D...
2020-03-20 20:05:08
2434
原创 WPF 变换方式LayoutTransform和RenderTransform
WPF提供两种变换方式,分别是LayoutTransform和RenderTransform。从字面意思来讲LayoutTransform是布局变换,后者RenderTransform是渲染变换。共同点:他们都提供了TransformGroup(变换组)、TranslateTransform(平移)、RotateTransform(旋转)、ScaleTransform(缩放)、MatrixTr...
2020-03-19 18:48:25
1086
原创 WPF 使用后台定义与使用(模板)资源
在WPF开发中,我们经常定义资源的方式是通过在App.XAML文件的Resource节点、单独页面(Page、Window、UserControl等)的Resource下、元素节点下的Resource里以及单独添加资源字典(Dictionary.xaml)文件进行定义。其效果如下图所示。这些定义,后台可以通过元素的FindResource方法检索Key找到定义的资源。但是有...
2020-03-19 18:48:11
2506
原创 C# 获取路径下某种扩展名的文件
/// <summary> /// 找到当前路径下文件扩展名相同的文件 /// </summary> /// <param name="path">路径</param> /// <param name="ext">扩展名</param> ///...
2020-03-19 18:47:54
1087
原创 C# 获取字符串的的字符长度
方法1:直接将字符串转换StringBuilder结构,然后获取Capacity来获取字符串中真实(一个汉字等于2或者4)的字符(字节)长度。使用Length获取字符(1个汉字也只有一个字符)长度。...
2020-03-12 18:35:06
2394
原创 WPF 几何图形之图形微语言命令
WPF 几何图形之图形微语言命令在WPF中,可以通过几何图形(Geometry)来绘制矢量图形。简单的几何图形包括:LineGeometry、RectangleGeometry、EllipseGeometry等。复杂的集合图形包括:PathGeometry、 GeometryGroup 、CombineGeometry、StreamGeometry等。注意:StreamGeometry的内...
2020-03-06 08:48:08
1248
1
WPF MaterialDesign开源免费UI组件的简单使用
2019-08-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人