WPF Good UI 2】的更多相关文章

WPF多线程UI更新——两种方法 前言 在WPF中,在使用多线程在后台进行计算限制的异步操作的时候,如果在后台线程中对UI进行了修改,则会出现一个错误:(调用线程无法访问此对象,因为另一个线程拥有该对象.)这是很常见的一个错误,一不小心就会有这个现象.在WPF中,如果不是用多线程的话,例如单线程应用程序,就是说代码一路过去都在GUI线程运行,可以随意更新任何东西,包括UI对象.但是使用多线程来更新UI就可能会出现以上所说问题,怎么解决?本文章提供两个方法:Dispatcher(大部分人使用),T…
WPF Modern UI 主题更换原理 一 . 如何更换主题? 二 . 代码分析 代码路径 : FirstFloor.ModernUI.App / Content / SettingsAppearance.xaml 1.关键 XAML 代码 <ComboBox Grid.Row="1" Grid.Column="1" ItemsSource="{Binding Themes}" SelectedItem="{Binding Se…
原文:WPF 模拟UI 键盘录入 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/yangyisen0713/article/details/18355375 Winform中如果想模拟键盘录入可以用SendKeys类,在WPF中一样可以,只需引用WpfSendKeys.dll即可. 1.添加WpfSendKeys.dll的引用: 2.MainWindow.xaml代码如下: <Window x:Class="WPFKey.MainWind…
原文地址:http://www.cnblogs.com/rainlam163/p/3365181.html 前言: 距离上一篇博客,整整一个月的时间了.人不能懒下来,必须有个阶段性的总结,算是对我这个阶段的一个反思.人只有在总结的过程中才会发现自己的不足. 公司每天都要在OA系统上上班点击签到,下班点击签退,每天都要写工作日志.有的时候头脑不清醒或者忙过头了(别说你们没有过),就会忘记签到或者签退,有时候甚至忘记写工作日志.这会直接导致扣人工啊有木有,所以我才有了这个想法.首先声明,开发这个东西…
WPF MVVM UI分离之<交互与数据分离>   在我们使用WPF过程中,不可避免并且超级喜欢使用MVVM框架. 那么,使用MVVM的出发点是视觉与业务逻辑分离,即UI与数据分离 诸如下面的问题: 删除操作,假如需要先执行一部分数据的处理,然后删除界面列表中的子项,之后再执行其它数据的处理.请问此业务该放置于Xaml.cs文件,还是ViewModel中呢? 再如弹窗,提示框,设置列表的滚动等等. 此上一些操作,我们不应该把业务代码直接挪到cs文件中,因为删除操作绝大部分的代码都是数据的处理.…
前言: 距离上一篇博客,整整一个月的时间了.人不能懒下来,必须有个阶段性的总结,算是对我这个阶段的一个反思.人只有在总结的过程中才会发现自己的不足. 公司每天都要在OA系统上上班点击签到,下班点击签退,每天都要写工作日志.有的时候头脑不清醒或者忙过头了(别说你们没有过),就会忘记签到或者签退,有时候甚至忘记写工作日志.这会直接导致扣人工啊有木有,所以我才有了这个想法.首先声明,开发这个东西并不是博主对工作不认真不负责任,也并不是偷懒.相反,第一,可以避免因工作过忙忘记签到扣工资:第二,在开发的过…
原文:[WPF]UI虚拟化之------自定义VirtualizingWrapPanel 前言 前几天QA报了一个关于OOM的bug,在排查的过程中发现,ListBox控件中被塞入了过多的Item,而ListBox又定义了两种样式的ItemsPanelTemplate.一种用的是虚拟化的VirtualizingStackPanel,另一种没有考虑虚拟化用的是WrapPanel.所以当ListBox切换到第二种Template,而且有很多Item的时候,内存就爆掉然后直接挂了. 然后就想着有没有现…
最近项目中运用到了WPF处理三维软件,在C/S结构中WPF做UI还是有很多优越性,简单的学了一点WPF知识,成功的完成项目目标.项目过度阶段对于WPF的一些基本特点有了进一步了解 .至此花费一点时间研究研究WPF控件. 为以后的项目开发中提供一些可观的资源也是不错的. 目前控件完成数量有限,空余时间较少,参考了一些web中bootstrap控件样式进行扩展.很多控件仍在扩展中. 也有一些控件是仿一些较好UI效果参照的,例窗体皮肤仿QQ皮肤,其中Checkbox中追加了右上角“✔” 选中样式.紧紧…
免费控件库: 1.Extended WPF Toolkit 官方拓展控件 http://wpftoolkit.codeplex.com/ 2.avalondock 可停靠布局(wpf toolkit包含此控件) http://avalondock.codeplex.com/ 3.Modern UI for WPF 现代UI框架 https://github.com/firstfloorsoftware/mui 4.Fluent Ribbon 类似office 2010 2013 windows…
在我们使用WPF过程中,不可避免并且超级喜欢使用MVVM框架. 那么,使用MVVM的出发点是视觉与业务逻辑分离,即UI与数据分离 诸如下面的问题: 删除操作,假如需要先执行一部分数据的处理,然后删除界面列表中的子项,之后再执行其它数据的处理.请问此业务该放置于Xaml.cs文件,还是ViewModel中呢? 再如弹窗,提示框,设置列表的滚动等等 此上一些操作,我们不应该把业务代码直接挪到cs文件中,因为删除操作绝大部分的代码都是数据的处理.所以,数据的部分放置在ViewModel中,一些交互放在…
Wtf(暂时命名,随便起的 = _=),模仿WPF的框架,还没有完善,只有简单的基础元素,支持数据绑定.虽然支持mono但是mono有bug 写这个只是兴趣爱好,感觉也没多大意义了,如果这个UI框架完善了,有多少人愿意用?毕竟Windows上有WPF,而且C#跨平台需求也不多啊.我对WPF也不算熟悉,要完善的话,还有很多要写.一大堆常用控件和设计器.不过我不用XML来描述,而是直接用C#来定义,设计器直接生成C#代码,因为我觉得,如果有强大的设计器,写XML就是多余的,而且解析XML还影响性能,…
XAML是什么 XAML全称是Extensible Application Markup Language (可扩展应用程序标记语言),是专门用于WPF技术中的UI设计语言. XAML基础 XAML是基于XML的,且XAML是以一个树形结构作为整体,与HTML的DOM树类似,如果你对XML了解的话,看到XAML应该会有一种亲切感,同时也能很快的掌握. 为了更直观的了解XAML的语法规则,我们新建一个WPF项目. 打开VS,通过文件>新建>项目菜单或者通过Ctrl+Shift+N快捷键打开新建项…
对于 WPF 程序,如果你有某一个 UI 控件非常复杂,很有可能会卡住主 UI,给用户软件很卡的感受.但如果此时能有一个加载动画,那么就不会感受到那么卡顿了.UI 的卡住不同于 IO 操作或者密集的 CPU 计算,WPF 中的 UI 卡顿时,我们几乎没有可以让 UI 响应的方式,因为 WPF 一个窗口只有一个 UI 线程. No!WPF 一个窗口可以不止一个 UI 线程,本文将设计一个异步加载 UI 的容器,可以在主线程完全卡死的情况下显示一个加载动画. 本文是对我另一篇博客 WPF 同一窗口内…
许多时候,我们的界面上会呈现大量的数据,如包含数千条记录的表格或包含数百张照片的相册.由于呈现UI是一件开销比较大的动作,一次性呈现数百张照片就目前的电脑性能来说是需要占用大量内存和时间的.因此需要对其进行优化.以前采用的方案大多数是翻页,翻页在某种程度上造成用户浏览的中断,因此现在往往采用一种新的方案——UI虚拟化. UI虚拟化的原理是:但是由于显示器和人眼的限制,用户往往只会同时看到其中的数十条数据,因此只要在界面上渲染用户所看到的那些数据即可,对于用户呈现的界面仍然是一样的.微软的MSDN…
大家都知道在WPF中对非UI线程中要处理对UI有关的对象进行操作,一般需要使用委托的方式,代码基本就是下面的写法 App.Current.MainWindow.Dispatcher.Invoke(new Action(() => { //TODO:更改UI相关的操作 })); 我以前也总是如此写法,没出现过毛病,可是偏偏就在今日,我在串口接收事件中这样写报错了,错误提示说:“ 其他线程拥有此对象,此线程不能使用”,对于没有多少底子的我当时肯定是一脸蒙圈了,还是去群里问问吧,一问果 然是高手给出了…
前言 在WPF中,在使用多线程在后台进行计算限制的异步操作的时候,如果在后台线程中对UI进行了修改,则会出现一个错误:(调用线程无法访问此对象,因为另一个线程拥有该对象.)这是很常见的一个错误,一不小心就会有这个现象.在WPF中,如果不是用多线程的话,例如单线程应用程序,就是说代码一路过去都在GUI线程运行,可以随意更新任何东西,包括UI对象.但是使用多线程来更新UI就可能会出现以上所说问题,怎么解决?本文章提供两个方法:Dispatcher(大部分人使用),TaskScheduler(任务调度…
废话不多说,接下来直接开始介绍WPF-UI界面-Grid面板 如图就是创建好了的一个WPF项目,整个界面被一个Window窗体包含起来,上面类似于什么什么网址什么的其实就相当于.net的命名空间,缺什么引用的时候,就会提示你缺少引用,那么只需要引用进来就行了. x:Class=“滴滴滴”,这个“滴滴滴”的内容就是所创建窗体的目录,比如这个就是我创建的MVVMText项目,在Views文件夹下的Login视图. Title就是窗体最上方的标题,Height和width就是窗体的高度和宽度了,这些都…
Fiddler 插件的 UI,本身使用的 WinForm,这个例子是使用 WinForm 中的 WPF 容器,将 WPF 控件作为 Fiddler 插件的 UI 使用. 为什么使用 WPF ?为了自适应布局呀. 源代码可以参看此 Demo: JasonGrass/Fiddler.Demo: Fiddler 插件开发的 Demo Fiddler 插件使用 .net framework 实现. 插件实现的几个关键点 1 继承 IAutoTamper 接口 此接口继承自 IFiddlerExtensi…
转载:https://www.cnblogs.com/bdbw2012/articles/3777594.html 我们知道只有UI线程才能更新UI界面,其他线程访问UI控件被认为是非法的.但是我们在进行异步操作时,经常需要将异步执行的进度报告给用户,让用户知道任务的进度,不至于让用户误认为程序“死掉了”,特别是对于Winform,WPF等客户端程序尤为重要. 那么我们要探讨的就是如何让非UI的任务线程更新UI界面.下面对已知的几种实现方式做个总结.随着.Net版本的不断升级,实现方式还可能会增…
公司内部一个项目是用WPF作为GUI 访问web接口的形式获取数据, 但是由于数据量比较大,也没做分页,于是就需要一个loading的控件,网上查了很多资料但都比较浅.这里完成需求后,总结一下. 首先.loading控件的实现基本上都是1.控件显示:2.后台访问查询:3.UI渲染:4.控件隐藏. 想要实现这部分,需要做到异步,这里使用BackgroundWorker 组件用来执行诸如数据库事务.文件下载等耗时的异步操作. 关于backgroundWorker这里不做过多的记录,已经有很多人进行了…
网站:https://github.com/vasanthmes/WPF-Dashboard-UI-Material-Design-Concept theme <Application x:Class="MobileAppUsageDashboard.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.micros…
ListBox  默认是UI虚拟化的. 1. 原生使用  <ListBox VirtualizingPanel.IsVirtualizing="True" VirtualizingPanel.VirtualizationMode="Recycling"> </ListBox>  为ListBox 设置一个ItemTemplate <DataTemplate x:Key="ListBoxDataTemplate">…
    WPF的布局元素有一下几个 Grid:网格.可以自定义行和列并且通过行列的数目.行高和列宽来调整控件的布局. StackPanel:格式面板.可将包含的元素在水平方向或者竖直方向排成一条线. Canvas:画布.放在画布上的控件以绝对坐标进行定位. DockPanel:泊靠式面板.内部元素可以选择泊靠方向. wrapPanel:自动折行面板.内部元素排满一行后自动折行.       下面主要记录下DockPanel,因为在看书的过程中,我发现它是最难理解的.     DockPanel内…
在WPF应用程序开发过程中,大数据量的数据展现通常都要考虑性能问题.有下面一种常见的情况:原始数据源数据量很大,但是某一时刻数据容器中的可见元素个数是有限的,剩余大多数元素都处于不可见状态,如果一次性将所有的数据元素都渲染出来则会非常的消耗性能.因而可以考虑只渲染当前可视区域内的元素,当可视区域内的元素需要发生改变时,再渲染即将展现的元素,最后将不再需要展现的元素清除掉,这样可以大大提高性能. 对于ListBox,在XAML Template中加入以下属性 ScrollViewer.CanCon…
      <Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="455" Widt…
需求①:控件拖拽——按住鼠标,可自由拖拽控件. 方法:目前看到的办法有两种. 使用ZoomableCanvas:http://www.cnblogs.com/gnielee/archive/2011/03/09/wpf-zoomablecanvas.html 使用微软原生的Thumb类(名称空间System.Windows.Controls.Primitives):https://msdn.microsoft.com/en-us/library/system.windows.controls.p…
自定义一个漂亮的window窗口UI <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:BlurBehindDemo" x:Class="BlurBehindDemo.Ma…
public class InvokeHelper { #region delegates private delegate object MethodInvoker(Control control, string methodName, params object[] args); private delegate object PropertyGetInvoker(Control control, object noncontrol, string propertyName); privat…
稍后追加,详细教程 http://mui.codeplex.com/…
System.Windows.Application.Current.Dispatcher.BeginInvoke(new Action(()=> { //··················· }))…