摘要:
本篇文章介绍如何实做ApplicationMenu,用以在点选ApplicationBar的选项之后,在同一个页面显示选单,为自己留个纪录也希望能帮助到有需要的开发人员。 阅读全文
摘要:
[WP8] ListBox的Item宽度自动填满范例下载范例程序代码:点此下载问题情景开发WP8应用程序的时候,常常会需要使用ListBox作为容器来呈现各种数据集合。但是在ListBox呈现数据时,ListBox中每个用来呈现数据的Item控件,在默认的状态下,宽度并不会填满整个ListBox。这样的默认样式,会因为Item控件的内容而动态的决定实际宽度,这很容易造成显示时排版不整齐,进而影响整体美观。执行结果程序代码(.XAML) 程序代码(.CS)public class TestData{ public string Name { get; ... 阅读全文
摘要:
[WP8] Binding时,依照DataType选择DataTemplate范例下载范例程序代码:点此下载问题情景在开发WPF、WP8...这类应用程序的时候,透过Binding机制搭配DataTemplate,能让数据类别在经过Binding之后于画面上呈现。例如下列的范例,透过Binding机制搭配DataTemplate,就能在WP8的ListBox控件中,依照DataTemplate的定义,来呈现Car对象集合。执行结果程序代码(.CS)namespace BindingSample001.Models{ public class Car { public ... 阅读全文
摘要:
[CLK Framework] CLK.Threading.PortableTimer - 跨平台的Timer类别问题情景开发应用程式的时候,免不了需要加入一些定时执行的设计,例如说:定时更新画面资料、定时检查资料库内容、定时检查通讯是否断线...等等。而.NET Framework也很贴心的提供三种不同的Timer类别,用来帮助开发人员设计出定时执行的功能模组。.NET Framework提供的三种Timer类别,可以参考Bill叔的部落格:三种时间人《.NET中的Timer(1)》三种时间人《.NET中的Timer(2)》三种时间人《.NET中的Timer(3)》 但是当功能模组的开发,是 阅读全文
摘要:
[CLK Framework] CLK.Settings - 跨平台的参数存取模块问题情景开发功能模块的时候,常常免不了有一些参数(例如ConnectionString),需要存放在Config檔(App.Config、Web.Config)。而.NET Framework也很贴心的提供System.Configuration命名空间里的类别,用来帮助开发人员简化存取Config档的开发工作。但是当功能模块的开发,是以跨平台执行为目标来做设计的时候,因为不是每个平台都允许Config档的存在,所以连带的System.Configuration命名空间里的类别,也并不支持跨平台的参考使用。像是开 阅读全文
摘要:
CLK.Prototype.Architecture最近找数据,看到了博客园在不久之前,办了一个架构分享的活动:.Net项目分层与文件夹结构大全。看完之后觉得获益良多,接着也忍不住手痒,开始整理属于自己的分层架构:「CLK Architecture」。CLK Architecture的设计,是以DDD(Domain-driven design)概念精神做为核心,并且选用微软.NET相关技术来实作。期望提供开发人员,在开发.NET相关应用程序时,有个基础的分层架构、命名惯例可以参考,省去每个项目都要重新思考设计的脑力消耗。另外CLK Architecture也做为开发技术的索引地图,在每个不同的 阅读全文
摘要:
套用IoC模式 在设计系统对象的时候,可以套用IoC模式来切割相依性。如下列范例程序代码,就是在Master、Slave两个对象之间套用IoC的小小范例,在这个范例中NormalSlave会透过MessageNotified事件,来将执行讯息通知给Master。 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication1{ class Program { ... 阅读全文
摘要:
新技术不是不能用,而是堆了新技术,接手的人就要学会这些。这边对于新技术的定义,是很广泛的定义为系统中没有使用过的技术。在系统一开始的时候,技术需求就是一片空白,后续设计的时候,每次加入的没有用过的技术,都需要去考虑是否有延续性、是否要定义为基础技术...等等考虑。大一点就像是要不要使用Design Patterns、DDD、TDD,或是MVVM要不要用、ASP.NET MVC不错要不要推。小一点的就像是版本控管要用哪种、版本分支、合并的策略是甚么。这些都是需要依照目前团队、未来目标等等方面去考虑。每个系统都有隐藏的项目天赋表,天赋就是系统里的技术,开发人员点满天赋才能吃透系统。--以开发人员的 阅读全文
摘要:
使用Visual Studio开发软件项目时,透过Visual Studio所提供的方案总管,可以很方便的管理程序代码与相关资源。方案总管中每个软件项目的程序代码档案会以树状结构的方式来呈现,这个树状结构主要是依照实体目录路径、实体档案路径来做为呈现的参考。随着时代的演进,单纯依照实体目录路径、实体档案路径来做为树状结构呈现的参考,已经慢慢跟不上开发上的需求。例如说,软件项目里一个ASP.NET网页,就包含了开发人员撰写的.aspx、.cs以及系统产生的.designer.cs三个程序代码档案。这时方案总管上如果单纯依照上列规则来呈现,可以预期到,当项目内ASP.NET网页越来越多的时候,方案 阅读全文
摘要:
在设计父对象的时候,会遇到对象方法的参数为类别本身,然后再由子对象去实做这个方法的场合,例如:比较对象是否相等的方法。在这个情景中,通常会设计为下列范例的写法,在子对象中先做转型、再做比较。这是一种可以正常运作的设计,但是子对象的方法参数会是父对象型别,而不是子对象型别。namespace ConsoleApplication1{ class Program { static void Main(string[] args) { ChildAddress addressA = new ChildAddress(); ... 阅读全文
摘要:
在多线程程序中使用MessageQueue Class来传送数据,很容易遇到InvalidCastException、NullReferenceException等等错误讯息。 这时只需要在传送数据的程序代码上加入lock机制,强制一次只能有一条线程传送,就可以避免掉这个问题。lock(_messageQueue){ _messageQueue.Send(dataBytes);} 阅读全文
摘要:
呼叫线程无法存取此对象在WPF、WinForm这些应用程序中,必需是UI线程才能控制窗体。如果像是下列的范例程序一样,使用了非UI线程来控制窗体,那就会看到内容为「呼叫线程无法存取此对象,因为此对象属于另外一个线程」的InvalidOperationException例外错误。<Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schema 阅读全文
摘要:
前言 在開發應用程式時,一個很重要的工作項目就是設計使用者介面的排版布局。WPF中所提供的Grid控制項,讓開發人員擁有將版面分割為欄列交錯表格區域的能力。而開發人員在使用Grid控制項分割版面之後,還可以在版面中加入GridSplitter控制項,用以在執行期間提供使用者動態調整表格區域大小的功能。 本篇文章介紹使用Grid控制項與GridSplitter控制項,來設計幾個常見的基本排版布局,為自己留個紀錄也希望能幫助到有需要的開發人員。 一上二下佈局 上圖是一個一上二下的佈局樣式,MSDN網站採用這個佈局樣式來提供各種資訊內容。 <!--Definition--><Gri 阅读全文
摘要:
原始码下载: MutualUdpClientSample.rar 在开发与远程设备通讯的系统时,为了提高数据传输的效率,常常会选择UDP这个通讯协议来作为数据传输的媒介。而 .NET framework中所提供的UdpClient对象,可以帮助开发人员依照系统需求开启UDP套接字点,快速建立UDP联机来提供与远程设备通讯的功能。这个系统架构下当增加一个不同种类的远程设备时,必须要提供一个不同的UDP套接字点,才能用来提供与不同种类远程设备通讯的功能,在远程设备种类越来越多时,系统所需要的UDP套接字点就会依照远程设备种类而增加。在远程设备种类越来越多的情景中,为了网络管理考虑会限制系统与远程设 阅读全文
摘要:
前言今天的日期是2013/03/21,笔者与Ian合着的「HTML5 & JavaScript 程序开发实战」出版了。这本书中笔者撰写的前五章,是针对HTML开发的基础做说明。不管甚么技术,基础都是最重要但也是最枯燥乏味的,在这讲究速成的现代,基础常常被忽略。但是万丈高楼平地起,拥有扎实的基础技术,... 阅读全文