摘要:
定义 单一职责原则(SRP):一个类只能有一个引起它变换的原因。 通俗来讲就是一个类只负责一个职责,若负责的职责太多,可能会由于其中一个职责的变化而影响其他职责。 举例 假设有一个Student,它既负责了学生的基本信息,又负责了学生平均成绩的计算,这就违反了单一职责原则。 1 public cla 阅读全文
摘要:
定义 开闭原则(OCP):软件实体应对扩展开放,对修改关闭。 通俗来讲就是,当需要进行扩展时,在不更改现有代码的前提之下,进行扩展。 举例 假设有一个动物发出声音的类为Animal,最初只有Dog(狗)和Cat(猫),后续需要新增Cow(牛);按照开闭原则,不应修改Animal类、Dog类或Cat类 阅读全文
摘要:
在编写上位机软件时,需要经常处理命令拼接与其他设备进行通信,通常对不同的命令封装成不同的方法,扩展稍许麻烦。 本次拟以特性方式实现,以兼顾维护性与扩展性。 思想: 一种命令对应一个类,其类中的各个属性对应各个命令段,通过特性的方式,实现其在这包数据命令中的位置、大端或小端及其转换为对应的目标类型; 阅读全文
摘要:
假设需要实现一个图标和文本结合的按钮 ,普通做法是 直接重写该按钮的模板; 如果想作为通用的呢? 两种做法: 附加属性 自定义控件 推荐使用附加属性的形式 第一种:附加属性 创建Button的附加属性 ButtonExtensions 1 public static class ButtonExte 阅读全文
摘要:
原理 先获取鼠标在控件中的坐标,在获取其每一项相对于ItemsControl的坐标,然后计算每一项离当前鼠标的距离,在根据这个距离,对其每一项进行适当的缩放 实现 创建一个类,命名为FishEyeItemsControl public class FishEyeItemsControl : Item 阅读全文
摘要:
实现目标,在一个ListBox中选择一个子项进行拖拽到另一个ListBox中,拖拽到某一子项区域进行替换 axaml代码 1 <ListBox 2 Name="consumableListBox" 3 Margin="5" 4 ItemsSource="{Binding ConsumableList 阅读全文
摘要:
创建消息提示控件 internal class Message : ContentControl { public int Time { get; set; } [Bindable(true)] public MessageType MessageType { get { return (Messa 阅读全文
摘要:
往往原有的标题栏无法满足需求,此时就需要进行自定义标题栏。 重新定义Window的Template 首先,需修改WindowChrome的几个属性 CaptionHeight属性值就是自定义标题栏的高,若值低于自定义窗体模板中的标题部分的高,可能会导致,鼠标点击标题栏无法拖动,因为鼠标此时可能不在C 阅读全文