- WPF 教程
- WPF - 首頁
- WPF - 概述
- WPF - 環境設定
- WPF - Hello World
- WPF - XAML 概述
- WPF - 元素樹
- WPF - 依賴屬性
- WPF - 路由事件
- WPF - 控制元件
- WPF - 佈局
- WPF - 佈局巢狀
- WPF - 輸入
- WPF - 命令列
- WPF - 資料繫結
- WPF - 資源
- WPF - 模板
- WPF - 樣式
- WPF - 觸發器
- WPF - 除錯
- WPF - 自定義控制元件
- WPF - 異常處理
- WPF - 本地化
- WPF - 互動
- WPF - 2D 圖形
- WPF - 3D 圖形
- WPF - 多媒體
- WPF 有用資源
- WPF - 快速指南
- WPF - 有用資源
- WPF - 討論
WPF - 畫布面板
Canvas 面板是基本的佈局面板,其中子元素可以使用相對於Canvas任何一側(如左、右、上、下)的座標顯式定位。
通常,Canvas 用於 2D 圖形元素(如 Ellipse、Rectangle 等),但不適用於 UI 元素,因為指定絕對座標在調整大小、本地化或縮放 XAML 應用程式時會造成麻煩。Canvas 類的層次繼承如下:
Canvas 類常用屬性
| 序號 | 屬性及說明 |
|---|---|
| 1 | Background 獲取或設定填充面板內容區域的畫刷。(繼承自 Panel) |
| 2 | Children 獲取此 Panel 的子元素的 UIElementCollection。(繼承自 Panel。) |
| 3 | Height 獲取或設定元素的建議高度。(繼承自 FrameworkElement。) |
| 4 | ItemHeight 獲取或設定一個值,該值指定 WrapPanel 中包含的所有項的高度。 |
| 5 | ItemWidth 獲取或設定一個值,該值指定 WrapPanel 中包含的所有項的寬度。 |
| 6 | LogicalChildren 獲取一個列舉器,該列舉器可以迭代此 Panel 元素的邏輯子元素。(繼承自 Panel。) |
| 7 | LogicalOrientation 面板的方向,如果面板僅支援在一個維度上進行佈局。(繼承自 Panel。) |
| 8 | LeftProperty 標識 Canvas.Left XAML 附加屬性。 |
| 9 | Margin 獲取或設定元素的外邊距。(繼承自 FrameworkElement。) |
| 10 | Name 獲取或設定元素的標識名稱。名稱提供一個引用,以便程式碼隱藏(例如事件處理程式程式碼)在 XAML 處理器在處理過程中構造標記元素後引用它。(繼承自 FrameworkElement。) |
| 11 | Orientation 獲取或設定一個值,該值指定排列子內容的維度。 |
| 12 | Parent 獲取此元素的邏輯父元素。(繼承自 FrameworkElement。) |
| 13 | Resources 獲取或設定本地定義的資源字典。(繼承自 FrameworkElement。) |
| 14 | Style 獲取或設定此元素在呈現時使用的樣式。(繼承自 FrameworkElement。) |
| 15 | TopProperty 標識 Canvas.Top XAML 附加屬性。 |
| 16 | Width 獲取或設定元素的寬度。(繼承自 FrameworkElement。) |
| 17 | ZIndexProperty 標識 Canvas.ZIndex XAML 附加屬性。 |
Canvas 常用方法
| 序號 | 方法及說明 |
|---|---|
| 1 | GetLeft 獲取目標元素的 Canvas.Left XAML 附加屬性的值。 |
| 2 | GetTop 獲取目標元素的 Canvas.Top XAML 附加屬性的值。 |
| 3 | GetZIndex 獲取目標元素的 Canvas.ZIndex XAML 附加屬性的值。 |
| 4 | SetLeft 設定目標元素的 Canvas.Left XAML 附加屬性的值。 |
| 5 | SetTop 設定目標元素的 Canvas.Top XAML 附加屬性的值。 |
| 6 | SetZIndex 設定目標元素的 Canvas.ZIndex XAML 附加屬性的值。 |
示例
以下示例演示如何將子元素新增到 Canvas 中。以下 XAML 實現在 Canvas 中建立橢圓,並具有不同的偏移屬性。
<Window x:Class = "WPFConvas.MainWindow"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d = "http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local = "clr-namespace:WPFConvas"
mc:Ignorable = "d" Title = "MainWindow" Height = "400" Width = "604">
<Grid>
<Canvas Width = "580" Height = "360" >
<Ellipse Canvas.Left = "30" Canvas.Top = "30"
Fill = "Gray" Width = "200" Height = "120" />
<Ellipse Canvas.Right = "30" Canvas.Top = "30"
Fill = "Aqua" Width = "200" Height = "120" />
<Ellipse Canvas.Left = "30" Canvas.Bottom = "30"
Fill = "Gainsboro" Width = "200" Height = "120" />
<Ellipse Canvas.Right = "30" Canvas.Bottom = "30"
Fill = "LightCyan" Width = "200" Height = "120" />
</Canvas>
</Grid>
</Window>
編譯並執行上述程式碼時,將生成以下輸出:
建議您執行上述示例程式碼,並嘗試此類的其他屬性。