WPF
Bird鸟人
这个作者很懒,什么都没留下…
展开
-
WPF 弱事件模式简介
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Forms;namespace weakEven.原创 2022-05-21 14:31:28 · 300 阅读 · 1 评论 -
WPF 触发器(通过A控件的属性改变,通知B控件发生改变)
<Window x:Class="TriggerDemo.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" .原创 2021-09-02 21:49:11 · 2460 阅读 · 0 评论 -
WPF使用ObservableCollection<T>来绑定ItemControl类容器 例子
一.新建Model,User.cs类,继承INPC接口 public class User : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; private string _age; public string Age { get { return _age; } ...原创 2021-01-24 23:36:21 · 678 阅读 · 0 评论 -
WPF INotifyPropertyChanged 使用实现MVVM例子
XAML代码:<Window x:Class="WpfMVVM.MainWindow" Title="MainWindow" Height="450" Width="800"> <StackPanel > <TextBlock Text="用户名:" /> <TextBlock Text="{Binding UserName}" Margin="0,20"/> <T...原创 2021-01-24 23:20:10 · 484 阅读 · 1 评论 -
WPF DrawingVisual 1像素的直线 如何避免抗锯齿导致的模糊效果
在WPF中用DrawingVisual 话直线的时候,往往会画出模糊的效果明明宽度设置成了1,但实际画出来的偏偏有两个像素,看起来有点模糊,这对于强迫症的人可忍不了!上代码:namespace OneLinePiexl{ public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); v原创 2020-10-08 17:44:34 · 1461 阅读 · 0 评论 -
WPF路由事件(冒泡事件和隧道事件)
隧道事件:在视觉树 从上往下,从window->实际源头,一般为被点击的控件。有preview标注的的都是隧道事件冒泡事件:在视觉树,丛下往上,点击的控件,一直到最上层(window)没有preview标注的的都是冒泡事件理解事件的触发顺序有助于我们更好的搭建程序结构举例代码如下:<Window x:Class="wpfpreview.MainWindow" xmlns="http://schemas.microsoft.com/wi...原创 2020-06-03 22:10:16 · 1172 阅读 · 0 评论 -
WebBrowser修改默认白色背景
背景:在使用Winform的WebBrowser显示网页的时候,在网页还未加载完成之前会显示白色,刚好网页内容呈现黑色,这样视觉效果上就十分差,想把这层白色的去掉。 试了很久之后发现根本去不掉,应该是控件默认自带的颜色。那就只能更换思路,在网页加载完毕之后,也就是在事件DocumentCompleted中,再将webbrowser显示出来,但是坑就坑在这里,winfr...原创 2018-03-26 10:21:15 · 4061 阅读 · 0 评论 -
.net4.6版本前设置window子窗口位置主窗口闪烁
在安装了.net4.6的版本是不会出现该问题的,但是在4.6以下的版本会出现,当设置之窗体的left和right属性时,会让主窗体闪烁一下。 之前是在load事件下写的: child_window.loaded+=(sender,e)=> { child_window.WindowSta原创 2016-08-02 11:32:55 · 304 阅读 · 0 评论 -
WPF绘图性能问题
代码: /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeCompone...原创 2018-06-04 15:12:12 · 3485 阅读 · 0 评论 -
WPF DataGrid 数据绑定之"List配合Dictionary"
WPF 的DataGrid是WPF中最为强大的控件之一,可以通过各种方式绑定例如通过最为形似的dataTable来绑定本文则用List<Dictionary<K,V>>来绑定 DataGrid data_grid = new DataGrid(); List<Dictionary<String, String>&g...原创 2018-11-26 14:20:49 · 3727 阅读 · 0 评论 -
CefSharp 使用问题记录
背景:CEF :是一个C/C++库,使用了google的chrome 开源内核WebKit引擎,可以允许开发者将网页嵌入CEF中进行展示CefSharp:是一个基于CEF,使用C++/CLI进行二次开发封装,使.NET开发者可以使用C# 来控制CEFCefSharp有Winform和WPF两个版本1.网页打开速度问题:使用了最简单的新建项目,打开网页明显感觉并没有chr...原创 2018-12-18 18:56:41 · 3803 阅读 · 0 评论 -
WPF 资源字典ResourceDictionary使用
资源字典的意义在于:1.高效,可以通过资源定义对象,并在标记的多个地方使用,这会精简代码2.可维护性,通过资源使用低级的格式化细节,如字号,并将它们移到便于修改的中央位置。在XAML中创建资源相当于在代码中创建常亮3.适应性,一旦某些特定信息与应用程序的其他部分分离开来,并放在资源中,那么可以动态的修改这些信息,如修改皮肤或者语言资源字典的使用分为三步:1.新建资源字典...原创 2019-06-05 21:34:53 · 31591 阅读 · 2 评论 -
WPF Grid内控件布局方法
代码如下:window下默认grid,gird有两行,然后分别加了一个button 和一个textblockpublic MainWindow() { InitializeComponent(); //为gird添加两行 grid.RowDefinitions.Add(new RowDefiniti...原创 2019-06-23 11:20:49 · 5872 阅读 · 0 评论 -
WPF 主窗口关闭后,无法退出进程 解决
WPF主窗体关闭后,却依然无法退出进程在win10下,任务管理器中显示后台进程中依然存在尝试将Application.ShutMode设置为MainWindowClose,但是问题依然存在后来发现原来在程序中实例化了一个Thread,这个Thread在循环接收Socket消息将该Thread设置为isBackground=true 即可...原创 2019-09-17 09:30:41 · 3272 阅读 · 0 评论 -
WPF内嵌CEFSharp控件与JS交互
1)安装cefsharp.winform包打开VS2017,新建WPF项目,打开nuget,找到cefsharp.winform,安装1.为什么wpf程序不使用cefsharp.wpf?因为cefwpf 49版本的bug很多,而winform_cef就比较靠谱,比如在不同的输入法切换后无法输入中文2.那为什么不使用更高版本的cefwpf?因为要支持XP,而49版本是cef...原创 2018-05-09 14:22:02 · 4738 阅读 · 0 评论 -
详解WPF DockPanel的LastChildFill属性
MSDN解释:获取或设置一个值,该值指示 System.Windows.Controls.DockPanel 中的最后一个子元素是否拉伸以填充剩余的可用空间。返回:如果最后一个子元素拉伸以填充剩余的空间,则为 true;否则为 false。 默认值为 true。MSDN已经说的很清楚了,这个属性是用来是否最后一个元素是拉伸以填满整个剩余空间。而且默认值为true所以如果在一个刚new出来的dock...原创 2018-03-29 16:04:26 · 4938 阅读 · 0 评论 -
TextBlock中显示文字和图片,且不会自动换行
原本TextBlock显示图片是很容易的,即TextBlock.Inlines.Add(UiElement element);这个方法即可,但是,会出现如下效果:我不想要这种效果,所以改了下代码,变成了如下效果:单独的Xaml也可以实现,代码入下: TextWrapping="WrapWithOver原创 2016-10-26 13:36:26 · 3792 阅读 · 0 评论 -
WPF 触发器例子
WPF的触发器很强大,这里简单附上触发器的一个小例子,分别用XMAL和CS代码来实现一个功能,鼠标悬停在button上时改变字体颜色1.XMAL代码如下: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.原创 2016-09-25 12:12:18 · 540 阅读 · 0 评论 -
WPF ScrollViewer嵌套Listbox无法滚动
最近在做项目的时候,发现listBoxzi自带的垂直滚动条有问题,经常在Add(item)的时候下面会多出一些空白的部分,而且滚动条的长度也是无规则的,一会大一会小,而且无法控制横竖滚动条的显隐藏,并没有找到滚动条的属性,有人会说在xmal里改就好啦,我是使用C#后台代码写的,所以很难拿到滚动条,当然可以把滚动条抠出来,但是有点繁琐了 索性就直接在listBox外面包裹一个ScrollViewe...原创 2016-11-22 10:43:17 · 3602 阅读 · 3 评论 -
WPF Popup实现拖动
问题一.popup总是置顶,遮挡其他窗口最近发现popup设置打开后,总是会遮挡其他窗口,而我们只想让它仅仅在应用程序的上一层即可,并不像让它在最上面解决方案1:继承Popup重新定义控件PopupEx,代码如下:public class PopupEx : Popup { public static DependencyProperty TopmostP...原创 2016-11-01 10:16:22 · 5108 阅读 · 1 评论 -
WPF style 换肤
WPF整理-Style"Consistency in a user interface is an important trait; there are many facets of consistency,one of which is the consistent look and feel of controls. For example, all buttons shoul转载 2017-08-09 16:33:27 · 1088 阅读 · 0 评论 -
DataGrid无故多一行空白行
DataGrid绑定datatable时,Datagrid.Itemsource=dt.DefaultView;发现DataGRID会多处一行解决如下:对Datagrid的CanUserAddRows属性操作就可以了。DataGrid CanUserAddRows="False"../>将CanUserAddRows赋值成False,否则会自动生成额外一行,即使Ite原创 2017-03-17 14:54:52 · 13810 阅读 · 0 评论 -
WPF 如何显示gif
最近碰到了要显示表情的需求,而表情刚好是gif的图片。于是用了Image试了下,发现不行,只会显示第一帧,然后上网查了下资料,大致有这么几种方法,都可以实现。第一种:使用Winfrom里面的picturebox,缺点是要引用几个winfrom的dll第二种:用wpf的mediaelement控件,这控件本身是用来显示视频的,但是可以拿来放gif,这种方式有一个局限就是...原创 2016-11-01 09:52:34 · 12190 阅读 · 1 评论 -
WPF 实现简单的跑马灯
本文用WPF的动画实现一个简单的跑马灯xmal:<Window x:Class="wpfstatusBar.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006原创 2017-09-22 19:44:59 · 5640 阅读 · 0 评论 -
WPF 单个模块换肤
xmal:<Window x:Class="wpfSkin.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="原创 2017-09-20 09:35:27 · 606 阅读 · 0 评论 -
C# WPF 如何禁止窗口拖到屏幕边缘自动最大化
win7以上的系统新增了功能--窗口拖到屏幕边缘自动最大化,如何用代码禁止?如果窗体不允许修改大小,那么禁止最大化,其实很简单直接将设置属性this.ResizeMode = ResizeMode.NoResize;但是这样就直接让窗体无法改变大小了我们既想要能改变大小,又想禁止自动最大化,应该如何做?因为拖到屏幕边缘自动最大化,有个必要条件是鼠标按下去,然后拖,可以...原创 2019-08-14 19:25:03 · 6339 阅读 · 0 评论 -
C# WPF 仿QQ靠近屏幕上方自动缩起功能实现
几乎和QQ是一模一样的效果,而且核心代码只有20行左右,比网上其他的一些乱七八糟复杂的算法好太多代码如下:using System;using System.Windows;using System.Windows.Forms; //需要获取鼠标位置namespace moniQQcollasped{ public partial class MainWindow :原创 2017-10-13 09:16:06 · 1332 阅读 · 1 评论 -
WPF 利用HwndSource拦截Windows消息
WPF提供了一个HwndSource可以使你更快的实现处理Windows消息。通过HwndSource.FromHwnd得到的HwndSource可以添加(AddHook)移除(Remove)Hook首先注册SourceInitialized事件,在事件中创建一个HwndSource对象,然后利用其AddHook方法来将所有的windows消息附加到一个现有的事件中,本例子中WpfHa...原创 2017-09-21 14:07:04 · 5966 阅读 · 0 评论 -
WPF DrawingVisual详解
代码如下: public partial class MainWindow : Window { private DrawingVisual _drawingVisual = new DrawingVisual(); public MainWindow() { InitializeComponent原创 2016-09-19 11:22:45 · 14183 阅读 · 2 评论 -
WPF 动画执行后属性无法修改
在做了一个类似QQ展开的动画时,设置了TopProperty,通过改变Window.Top属性来实现展开特效,但是动画执行了之后,再去设置Window.Top的时候发现修改不了,代码调试后发现值设置了,但是依旧是原来的值。 这个设计到WPF的动画的一个属性绑架,在MSDN中有详细解释:https://msdn.microsoft.com/zh-cn/library/aa970493(v...原创 2017-10-24 11:24:46 · 1497 阅读 · 0 评论 -
WPF e.Systemkey的一个坑
当用代码去控制按键盘F10按钮的时候,切换TabControl的标签页,然后再按其余的键盘键,无法响应原因就是这个systemkey,是因为F10为系统的按键,用e.key==key.f10是无效的,只能用systemkey,那么问题来了,一旦用了这个systemkey之后后续的键盘消息,previewkeydown是收不到的,不管设置什么焦点都没用。最后加上了一句e.handle=t原创 2016-09-19 10:08:47 · 1804 阅读 · 1 评论