原创 WPF高級教程(十六)樣式

概念 樣式是可以應用於元素的一系列屬性值的集合。 樣式期望使用一份xaml代碼來設置一系列元素的細節,比如內外邊距,字體顏色等。 樣式類似於CSS但是要比CSS更加強大,強大之處在於: 可以設置依賴項屬性,使其可以控制控件行爲

原创 WPF高級教程(七)路由事件

介紹 與依賴項屬性一樣,路由事件是WPF對於傳統.NET事件的升級,使得事件擁有更強的傳播能力。 定義,註冊和包裝 // 我們來看一個Click事件定義的例子 public abstract class ButtonBase :

原创 WPF高級教程(十五)對象資源

概念 對象資源是使用代碼定義的一系列可以重用的對象,包括 畫刷,樣式,模板 等。WPF允許在代碼中以及在xaml中各個位置定義對象資源。 資源集合 在FrameworkElement中定義了一個Resources屬性,該屬性使用R

原创 WPF高級教程(十七)觸發器

使用觸發器 觸發器可以讓我們的界面可以自動化完成一些簡單的樣式改變,如鼠標放上去變色等。 在樣式中添加觸發器就是往 Style.Triggers 集合裏面添加觸發器,只要是派生自 TriggerBase 的實例都是可以添加到集合中

原创 WPF高級教程(九)控件

定義 能夠與用戶交互的元素。繼承自System.Windows.Control,基類提供以下能力: 設置對齊方式 設置Tab順序 背景,前景,邊框 文本內容尺寸和字體 注意在有時候,我們會在描述的時候說:這是界面上的一個控件,

原创 WPF高級教程(四)佈局

佈局原則 空間的尺寸可以自適應。(要實現這樣的效果需要不顯式的指定控件尺寸,而是設置控件尺寸的最大最小值) 不設置絕對定位,使用相對定位(比如使用margin就是相對定位而非絕對座標) 佈局控件能爲子控件合理分配尺寸 佈局控件可

原创 WPF高級教程(六)依賴項屬性

概述 依賴項屬性是屬性的一種全新的實現。通過對原有屬性的升級,依賴項能夠實現數據綁定,動畫或者WPF的其他進階功能。通過對於依賴項屬性的封裝,使得依賴項屬性的使用與普通屬性一樣,這樣既兼容了老的使用方法,又把WPF的新特性帶到了普

原创 WPF高級教程(十四)程序集資源

分類 WPF中的資源分爲兩類: 程序集資源 對象資源 其中,程序集資源指的是軟件開發中用到的圖片,聲音,xml文件等資源,這些資源被添加到項目中之後會被嵌入到編譯過得程序集中,會被編譯成二進制數據。 而對象資源是一些.NET對

原创 WPF高級教程(十一)綁定說明

概念 綁定是一種關係,告訴目標對象使用原對象的一些信息設置其屬性值。 分類 綁定關係分爲很多種,但是本質上來說是 目標對象的屬性 和 源對象的屬性 進行綁定。 我們這裏我們要求: 目標對象的屬性必須是依賴項屬性(這點很好理解,依

原创 WPF高級教程(十八)行爲

介紹 在講解到樣式的時候我們說,樣式是爲了一系列元素共享一些屬性而存在的,歸根結底是爲了複用代碼和邏輯,而我們學習了觸發器之後,發現我們可以用觸發器寫一些簡單的邏輯到樣式中,但是這種簡單的邏輯有時候遠遠不夠。 當我們要實現一堆元素

原创 WPF高級教程(十)WPF程序的生命週期

介紹 就像每一個窗口對應一個Window類一樣,每一個WPF的應用程序對應一個Application類 生命週期 創建 WPF程序中,Application類的創建是由App.xaml中完成的,具體的代碼如下 <Applicati

原创 最詳細的JavaScript高級教程(十四)單體內置對象

定義 由語言本身實現,不依賴宿主對象,不用初始化即可使用的對象,我們可以理解在語言所有初始化開始之前就初始化完成的對象。一共由下面五個: Object Array String Global Math Global的方法 全局

原创 最詳細的JavaScript高級教程(十三)包裝類型

概念 在講js中包裝類型的概念的時候我們想到在C#中,同樣有包裝類型的概念。基本類型不能有屬性和方法,而string,int等都是基本類型,講道理他們不該有int.parse這種使用,但是我們在別的語言中,經常使用這種語法,爲什麼

原创 最詳細的JavaScript高級教程(十五)對象的屬性

概念 ES對於對象的定義是:無序屬性的集合,其屬性可以包括基本值,對象或者函數。從中我們可以發現,js中的對象有下面的特徵 無序的集合,這個就讓js中的對象更像是散列表,是一系列無序的鍵值對的集合 屬性包括基本值,對象或者函數。

原创 最詳細的JavaScript高級教程(十八)高級原型鏈

經典繼承(借用構造函數) 爲了解決之前提到的超類型構造函數中引用類型的問題,我們可以使用借用構造函數的方式 function SuperType() { this.property = ['red']; } f