原创 WPF教程(三十三)數據綁定簡介

維基百科這樣描述數據綁定的概念:數據綁定是一種通用的技術,把兩個數據或信息資源綁定到一起,並保存數據同步。 在WPF中,微軟把數據綁定放在了重要位置,一旦你開始學習WPF,你就會發現,它幾乎是你做的所有事情的一個重要方面。如果你來自Win

原创 WPF教程(三十四)Hello, bound world!

就像我們在最開始的"Hello,world!"例子中一樣,我們通過一個"Hello,bound world!"例子來展示使用數據綁定是多麼簡單。現在就讓我們跳進這個例子來看看: <Window x:Class="WpfTutorialSa

原创 WPF教程(二十四)Canvas

Canvas大概是最簡單的面板了。在默認情況下,它什麼都不做,你把控件放到它裏面,然後通過具體的座標來指定位置。 如果你之前使用過其他UI庫如WinForms,Canvas會讓你感覺很親切。然而它趨向於使用絕對座標來控制子控件,如果你固定

原创 WPF教程(二十三)WPF面板簡介

面板是WPF中最重要的控件之一,用於存放其他控件,或者控制窗口/頁面的佈局。由於一個窗體只能放置一個子控件,因此面板用來隔成多塊區域,這些區域各自可以放置一個控件或者面板(別忘了面板也是控件)。 面板分不同的形式,每一種都有其自己處理佈局

原创 WPF教程(二十二)文本呈現

在本章節,我們討論爲什麼有時候在WPF中文本呈現得很模糊,之後是如何修復的,你自己又如何控制文本的呈現。 前面的教程我們有提到,其他UI框架如WinForms通過使用Windows API來實現各種功能,相對於這些框架,WPF總是通過其自

原创 WPF教程(三十)Grid單元格

目前爲止,我們只使用了帶*號的寬和高,它指定了一行或者一列應該佔據整個空間的比例。其實還有其他方法指定列寬和行高:絕對像素和自動寬高。下面的例子混合了這三種方法: <span style="font-size:14px;"><Window

原创 WPF教程(三十二)GridSplitter分割線

在前面的章節你已經學到,使用Grid面板可以很容易的將可用空間劃分成單個單元格。使用行和列的定義,又很容易控制每行或每列佔據多少空間。但是,如果你想讓用戶來改變這些該怎麼辦呢?這個時候GridSplitter就出場了。 GridSplit

原创 WPF教程(二十八)Grid

Grid面板也許是最複雜的面板類型了。Grip可以包含多行多列。你可以定義每一行的高度和每一列的寬度,通過一個像素值、可用空間的百分比或者自動分配這三種方式。自動分配會根據內容自動調整行高和列寬。Grip一般用於其他面板無法實現的情形,譬