WPF 窗体快捷键(热键)

原文:WPF窗体快捷键(热键)前言:在WPF项目开发当中,遇到了需要用到快捷键的需求,于是对热键做了一个快速学习,但是这方面的资源很少。。。 热键大致分为三种场景,下面用QQ的使用场景举例:全局热键:QQ的Ctrl+Alt+A截图。焦点热键:QQ消息栏的Shift+Enter文本换行。窗体热键:Alt+F4关闭QQ的窗口。 在WPF当中,全局热键和焦点热键都可以轻松实现,下面我只对窗体热键进行讲解。第一步:右键项目根目录引用—>管理Nuget程序包—>搜索NHotkey.Wpf并下载安装注册命令推荐加在Window(Page和UserControl中需要鼠标点击焦点后才能触发热键)废话少说,看代码:XAML中:<Window.Resources><RoutedUICommandx:Key="WinKeyDown"Text="F1"/><!--WinKeyDown是静态资源名,F1是你的热键的代名词(随便起)用来后台接收--></Window.Resources><Window.InputBinding...
代码星球 代码星球·2020-04-03

WPF DataGrid标题Header Binding失效

原文:WPFDataGrid标题HeaderBinding失效前言:因业务需要对WPF中的DataGrid控件中的行数进行统计,同时把统计的行数显示在列标题上。如果我们用常规的Binding手段更新DataGridTextColunm的Header的话是不会生效的,因为WPF中视觉树中没有DataGridTextColumn元素来映射它(DataGridTextColumn不是控件,因此它没有父控件)。错误示范:<DataGridTextColumnBinding="{BindingTest}"Header="{BindingColName}"/>因为视觉树的机制,我们只需要把列标题视为一个控件即可(注:Header属性会失效,需要初始化Binding的字段):<DataGridTextColumnBinding="{BindingTest}"Header="列名"><DataGridTextColumn.HeaderTemplate><DataTemplate><TextBlockText="{BindingDataContext...

WPF 高性能位图渲染 WriteableBitmap 及其高性能用法示例

原文:WPF高性能位图渲染WriteableBitmap及其高性能用法示例WPF渲染框架并没有对外提供多少可以完全控制渲染的部分,目前可以做的有:D3DImage,用来承载使用DirectX各个版本渲染内容的控件WriteableBitmap,通过一段内存空间来指定如何渲染一个位图的图片HwndHost,通过承载一个子窗口以便能叠加任何种类渲染的控件本文将解释如何最大程度压榨WriteableBitmap在WPF下的性能。本文内容如何使用WriteableBitmap启用不安全代码启用帧率测试4K脏区小脏区无脏区不渲染脏区大小与CPU占用率之间的关系启用基准测试(Benchmark)使用`CopyMemory`拷贝内存使用`MoveMemory`移动内存使用`Buffer.MemoryCopy`拷贝内存自己写for循环基准测试数据结论和使用建议WriteableBitmap渲染原理创建一个新的WPF项目,然后我们在MainWindow.xaml中编写一点可以用来显示WriteableBitmap的代码:<Windowx:Class="Walterlv.Demo.HighPerfo...

WPF 程序中应用 Windows 10 真?亚克力效果

原文:在WPF程序中应用Windows10真?亚克力效果从Windows10(1803)开始,Win32应用也可以有API来实现原生的亚克力效果了。不过相比于UWP来说,可定制性会差很多。本文介绍如何在WPF程序中应用Windows10真•亚克力效果。(而不是一些流行的项目里面自己绘制的亚克力效果。)本文内容API如何使用注意事项需要使用的API是微软的文档中并未公开的SetWindowCompositionAttribute。我在另一篇博客中有介绍此API各种用法的效果,详见:使用SetWindowCompositionAttribute来控制程序的窗口边框和背景(可以做Acrylic亚克力效果、模糊效果、主题色效果等)-walterlv当然,使用此API也可以做Windows10早期的模糊效果,比如:在Windows10上为WPF窗口添加模糊特效(就像开始菜单和操作中心那样)-walterlv为了方便地让你的窗口获得亚克力效果,我做了两层不同的API:AcrylicBrush当然,受到Win32启用亚克力效果的限制,只能在窗口上设置此属性WindowAccentCompositor...

C# WPF 简单自定义菜单切换动画

原文:C#WPF简单自定义菜单切换动画微信公众号:Dotnet9,网站:Dotnet9,问题或建议,请网站留言;如果您觉得Dotnet9对您有帮助,欢迎赞赏内容目录实现效果业务场景编码实现本文参考源码下载自定义菜单切换动画菜单切换动画3.1添加Nuget库使用.NetCore3.1创建名为“CustomMenu”的WPF解决方案,添加两个Nuget库:MaterialDesignThemes和MaterialDesignColors。MaterialDesign控件库3.2工程结构只修改了App.xaml(添加MD控件样式)和MainWindow.xaml(主窗口实现效果)。3.3App.xaml引入MD控件样式<Applicationx:Class="CustomMenu.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:Custo...

C# WPF 表单更改提示

原文:C#WPF表单更改提示微信公众号:Dotnet9,网站:Dotnet9,问题或建议,请网站留言;如果您觉得Dotnet9对您有帮助,欢迎赞赏内容目录实现效果业务场景编码实现本文参考源码下载未做修改的表单展示表单变化,关闭窗体提示来个Gif动态操作看看表单修改后,关闭窗体前检查提示3.1添加Nuget库使用.NetCore3.1创建名为“ValidateDataChange”的WPF解决方案,添加两个Nuget库:MaterialDesignThemes和MaterialDesignColors。MaterialDesign控件库3.2工程结构4个文件变动:App.xaml:添加MD控件样式MainWindow.xaml:主窗口实现效果MainWindow.xaml.cs:主窗口后台绑定及关闭验证Contact.cs:绑定的实体3.3App.xaml引入MD控件样式<Applicationx:Class="ValidateDataChange.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentatio...
代码星球 代码星球·2020-04-03

WPF GridControl单元格值与过滤值相同时,改变单元格背景色

原文:WPFGridControl单元格值与过滤值相同时,改变单元格背景色DataTrigger的Value不可绑定,所以我们需要用MultiBinding来实现这个功能。<dxg:TableView.CellStyle><StyleTargetType="{x:Typedxg:LightweightCellEditor}"BasedOn="{StaticResource{dxgt:GridRowThemeKeyResourceKey=LightweightCellStyle}}"><Style.Triggers><DataTriggerValue="True"><DataTrigger.Binding><MultiBindingConverter="{StaticResourcemultiValueEqualityConverter}"><BindingPath="Value"Mode="OneWay"/><BindingRelativeSource="{RelativeSourceAncest...

WPF datagrid AutoGenerateColumns隐藏部分列

原文:WPFdatagridAutoGenerateColumns隐藏部分列<DataGridx:Name="gridWC"ItemsSource="{BindingWorkCenterDataLis}"AutoGenerateColumns="True"><DataGrid.Columns><DataGridTextColumnBinding="{BindingIsHasExpend}"Visibility="Collapsed"Header="IsHasExpend"/><DataGridTextColumnBinding="{BindingFID}"Visibility="Collapsed"Header="FID"/><DataGridTextColumnBinding="{BindingParientFID}"Visibility="Collapsed"Header="ParientFID"/></DataGrid>之前使用的dev的gridcontrol,如果我的列bingding的字段与itemsso...

WPF 自适应布局控件

原文:WPF自适应布局控件publicclassKDLayoutGroup:Grid{publicdoubleLabelWidth{get;set;}publicdoubleGetLabelWidth(){returnLabelWidth;}publicvoidSetLabelWidth(doublevalue){if(this.ParentisKDLayoutControl){doublew=(this.ParentasKDLayoutControl).GetLableWidth();if(w<value){(this.ParentasKDLayoutControl).SetLabelWidth(value);}for(inti=0;i<Children.Count;i++){SetBatchLabelWidth(Children[i],value);}}}protectedoverridevoidOnRenderSizeChanged(SizeChangedInfosizeInfo){if(Children.Count==this.ColumnDefinitions.C...
代码星球 代码星球·2020-04-03

WPF DataGrid动态生成列的单元格背景色绑定

原文:WPFDataGrid动态生成列的单元格背景色绑定<DataTriggerBinding="{BindingRelativeSource={RelativeSourceSelf},Path=Column.DisplayIndex}"Value="1"><SetterProperty="Background"Value="{BindingRelativeSource={RelativeSourceSelf},Path=Content.Text,Converter={StaticResourcecellBackgroundConvert}}"/></DataTrigger>上面的是datagrid第一列的单元格背景色根据值改变。...

WPF 禁用中文

原文:WPF禁用中文 <TextBoxInputMethod.IsInputMethodEnabled="False"/> ...
代码星球 代码星球·2020-04-03

WPF UnhandledException阻止程序奔溃

原文:WPFUnhandledException阻止程序奔溃WPF程序捕获全局异常,遇到未处理的异常,虽可以捕获,但是不能阻止程序退出。AppDomain.CurrentDomain.UnhandledException+=newUnhandledExceptionEventHandler(CurrentDomain_UnhandledException);voidCurrentDomain_UnhandledException(objectsender,UnhandledExceptionEventArgse){if(e.ExceptionObjectisSystem.Exception){Exceptionex=(System.Exception)e.ExceptionObject;MessageBox.Show(ex.Message);}}只要在App.Config文件中添加<runtime><legacyUnhandledExceptionPolicyenabled="1"/></runtime>...

WPF 线程中异常导致程序崩溃

原文:WPF线程中异常导致程序崩溃一般我们WPF中都加全局捕获,避免出现异常导致崩溃。Application.Current.DispatcherUnhandledException+=Current_DispatcherUnhandledException;AppDomain.CurrentDomain.UnhandledException+=newUnhandledExceptionEventHandler(CurrentDomain_UnhandledException);TaskScheduler.UnobservedTaskException+=TaskScheduler_UnobservedTaskException;但是,一些比较耗时的操作,我们放到线程中,如果抛出了异常System.Threading.ThreadPool.QueueUserWorkItem(newSystem.Threading.WaitCallback((p)=>{System.Threading.Thread.Sleep(1000);thrownewException("bbb");}));...

WPF MaterialDesignInXamlToolkit锁屏恢复后页面冻结的问题

原文:WPFMaterialDesignInXamlToolkit锁屏恢复后页面冻结的问题在做WPF项目时,用到开源项目。结果客户用的时候发现这个问题,锁屏后,界面不刷新。如果不用MaterialDesign,测试后不会出现这个问题。找了很多资料才发现原来时MaterialDesign的ShadowAssist的缓存问题,在窗体的xmal界面中添加这段代码就可以了materialDesign:ShadowAssist.CacheMode="{x:Null}"参考资料:https://github.com/MaterialDesignInXAML/MaterialDesignInXamlToolkit/issues/559...

WPF TabIndex默认样式修改:去掉默认虚线框、自定义样式(Button控件为例)

原文:WPFTabIndex默认样式修改:去掉默认虚线框、自定义样式(Button控件为例)Tab键切换时,被选控件自动存在虚线框,有时候为了界面美观,这个虚线框就显得比较麻烦。废话不多说,下面是方法。<Window.Resources><Stylex:Key="MeyFocusVisual"TargetType="{x:TypeButton}"><!--去掉默认的Tab选择虚框--><SetterProperty="FocusVisualStyle"Value="{x:Null}"/></Style></Window.Resources>...<ButtonWidth="200"Height="20"Style="{StaticResourceMeyFocusVisual}">你怎么按Tab也不会出现虚线框了</Button><ButtonWidth="200"Height="20"Style="{StaticResourceMeyFocusVisual}">就是不出来<...
首页上一页...3435363738...下一页尾页