通常WPF中通过继承UserControl的来快速创建自定义控件,最近项目上需要设计一个卫星星图显示控件,最终效果如下图所示.完成过程中遇到了自定义集合依赖属性无法触发更新通知的问题,在此记录一下,方便有相同问题的朋友们可以快速解决,也希望有人能发现更好的解决办法. 为了完成目的,我写了下面一个SateChart自定义控件类, XAML代码如下: <UserControl x:Class="WpfApplication1.SateChart" xmlns="http:/…
除去简单控件的数据绑定,还有集合控件的数据绑定,一下示例 这发现 source 变成了 itemsSource   Path 变成了   DisplayMemberPath itemsSource:代表集合控件的数据源 DisplayMemberPath:代表集合控件显示的值,是集合中的单项的哪一属性 SelectedItem.Id:代表选中项的 Id 这里 textbox 的text属性与 listbox控件的选中项,的id 属性绑定 实际上 listbox的绑定 内部是以下实现 以下为前端绑…
前言: 只要是有表单存在,那么就有可能有对数据的校验需求.如:判断是否为整数.判断电子邮件格式等等. WPF采用一种全新的方式 - Binding,来实现前台显示与后台数据进行交互,当然数据校验方式也不一样了. 本专题全面介绍一下WPF中4种Validate方法,帮助你了解如何在WPF中对binding的数据进行校验,并处理错误显示. 一.简介 正常情况下,只要是绑定过程中出现异常或者在converter中出现异常,都会造成绑定失败. 但是WPF不会出现任何异常,只会显示一片空白(当然有些Con…
原文:WPF 自定义的图表(适用大量数据绘制)下 上一篇文章中讲了WPF中自定义绘制大量数据的图标,思路是先将其绘制在内存,然后一次性加载到界面,在后续的调试过程中,发现当数据量到达10W时,移动鼠标显示数据有明显的延迟.经过思考,我采用了以下两个办法解决这个问题: 1.将数据显示的文本与图表分离,作为一个单独的canvas,这样,显示文本数据的时候就不需要重画图表了 2.计算鼠标移动速度,当移动速度过快时,不绘制文本,减少数据文本的绘制频率 3.使用START_INDEX 和 END_INDE…
原文:WPF 自定义的图表(适用大量数据绘制) 在WPF中绘制图表比较简单,有很多的第三方控件,但是在绘制大量数据的时候,就显得有些吃力,即便是自己用StreamGeometry画也达不到理想的效果,要达到绘制大量数据而不会顿卡现象,只有一个途径,就是首先在内存中绘制好所有的图形,再一次性加载(或者说绘制)到界面控件Canvas或Grid中. 废话不多说,直接看效果吧 选中放大效果 源代码: using System; using System.Collections.Generic; usin…
原文:C#如何在VS2015 2017版本中编写WPF UI界面引入第三方SVG图形 在VS2015 2017版本中编写WPF UI界面引入第三方SVG图形     最近在写WPF界面的时候遇到一个情况,由于界面已经由UI设计师用PS和AI软件画好了,在做UI的时候直接照着图做就行. wpf中UI编辑是非常方便的.但是如果界面已经有PS或者AI的原图的时候,如果所有的控件都用xaml代码重新画,那势必会占用大量重复的时间. 将PS的原图切图意识一个方法,但是有些UI的控件需要我们在拖动界面的时候…
Swagger 自定义UI界面 Swagger简单介绍 如何使用Swagger 添加自定义UI界面 使用swagger-ui-layer Swagger ui 的原生UI界面如下: 个人感觉原生UI显示的有些不够漂亮和清晰,特别是request 的model部分  所以想重新设计一个更加友好美观的UI界面. 最后的效果图如下: 接口文档信息界面 接口文档调试界面 实现原理: 因为Swagger-ui读取的数据来源于/v2/api-docs,并且返回的是json数据. 所以只要自己写一个页面去解析…
使用Intellij idea向数据库插入表数据的时候,如果该表是联合主键的,那么不能使用UI界面来进行插入-- 必须通过SQL语句才能插入-- 至于为什么?我也不知道-.搞了大半天--想省时间不写SQL,结果插入不了数据-还以为是创建表的时候出错了-..…
WPF框架规定只有UI线程(主线程)可以更新界面,所有其他后台线程无法直接更新界面.幸好,WPF提供的SynchronizationContext类以及C#的Lambda表达式提供了一种方便的解决方法.以下是代码: public static SynchronizationContext s_SC = Synchronization.Current; //主窗口类的静态成员   在App类中: static volatile int s_nMainThreadID = Thread.Curren…
原因: 一般来说,一个WPF窗口程序,只有一个UI线程, 如果这个线程停在某个函数,UI将会被阻塞,所有其他的界面操作都不能即时响应. 解决方案: 新开一个线程来执行耗时较长的操作,以不阻塞UI.…