WPF and Silverlight 学习笔记(九):WPF布局管理之Canvas、InkCanvas
一、Canvas
在WPF中子元素的绝对定位的布局控件
∙ 其子元素使用Width、Height定义元素的宽度和高度
∙ 使用Convas.Left(Convas.Right)、Convas.Top(Convas.Bottom)定义与Convas容器的相对位置
∙ 如果同时存在Convas.Left和Convas.Right、Convas.Top和Convas.Bottom,则Convas.Left、Convas.Top优先生效
例如:
1: <Canvas>
2: <Button Canvas.Left="10" Canvas.Top="10" Height="23" Width="75">LT</Button>
3: <Button Canvas.Right="10" Canvas.Top="10" Height="23" Width="75">RT</Button>
4: <Button Canvas.Left="10" Canvas.Bottom="10" Height="23" Width="75">LB</Button>
5: <Button Canvas.Right="10" Canvas.Bottom="10" Height="23" Width="75">RB</Button>
6: </Canvas>
在调整窗体大小时,LT与左、上距离保持不变;RT与右、上距离保持不变;LB与左、下距离保持不变;RB与右、下距离保持不变。使用Canvas不能简单地实现Windows应用程序中Acho的功能。
二、InkCanvas
在WPF中实现允许使用墨迹的控件。如:
1: <Window x:Class="WPFLayoutDemo.InkCanvasDemo"
2: xmlns="schemas.microsoft/winfx/2006/xaml/presentation"
3: xmlns:x="schemas.microsoft/winfx/2006/xaml"
4: Title="InkCanvasDemo" Height="200" Width="300">
5: <InkCanvas>
6: <InkCanvas.DefaultDrawingAttributes>
7: <DrawingAttributes Color="Red" />
8: </InkCanvas.DefaultDrawingAttributes>
9: <Image Width="155" Height="155" InkCanvas.Left="10" InkCanvas.Top="10"
10: Source="Logo2.png"/>
11: </InkCanvas>
12: </Window>
其他的功能与Canvas相近。
WPF and Silverlight 学习笔记(十): WPF控件模型
WPF对控件其类型的继承方式如下
(其中绿表示的类是抽象类,蓝表示的类是非抽象类)
∙ 控件内容模型
System.Windows.Controls.Control类:表示 用户界面 (UI) 元素的基类,这些元素使用ControlTemplate来定义其外观
System.Windows.Controls.Control类:表示 用户界面 (UI) 元素的基类,这些元素使用ControlTemplate来定义其外观
o ContentControl:ContentControl 是一种包含一段内容的 Control
说明 | ContentControl 是一种包含一段内容的 Control。 |
内容属性 | Content |
内容模型信息 | 控件内容模型概述 |
属于此类型系列的类型 | Button, ButtonBase, CheckBox, ComboBoxItem, ContentControl, Frame, GridViewColumnHeader, GroupItem, Label, ListBoxItem, ListViewItem, NavigationWindow, RadioButton, RepeatButton, ScrollViewer, StatusBarItem, ToggleButton, ToolTip, UserControl, Window |
可包含 ContentControl 类型的类型 | ContentControl 类、HeaderedContentControl 类、ItemsControl 类、HeaderedItemsControl 类、Panel 类、Decorator 类和 Adorner 类 |
子类别 | HeaderedContentControl 类 |
o HeaderedContentControl:包含一段内容并具有 Header 的 ContentControl
说明 | HeaderedContentControl 是一种包含一段内容并具有 Header 的 ContentControl。 |
内容属性 | Content, Header |
内容模型信息 | 控件内容模型概述 |
属于此类型系列的类型 | Expander, GroupBox, HeaderedContentControl, TabItem |
可包含 HeaderedContentControl 类型的类型 | ContentControl 类、HeaderedContentControl 类、ItemsControl 类、HeaderedItemsControl 类、Panel 类、Decorator 类和 Adorner 类 |
o ItemsControl:可包含多个项目(例如字符串、对象或其他元素)的 Control
说明 | ItemsControl 是一种可包含多个项目(例如字符串、对象或其他元素)的 Control。 |
内容属性 | Items, ItemsSource |
主内容类型 | 多个项目,可以是字符串、对象或其他元素。 |
内容模型信息 | 控件内容模型概述 |
属于此类型系列的类型 | Menu, MenuBase, ContextMenu, ComboBox, ItemsControl, ListBox, ListView, TabControl, TreeView, Selector, StatusBar |
可包含 ItemsControl 类型的类型 | ContentControl 类、HeaderedContentControl 类、ItemsControl 类、HeaderedItemsControl 类、Panel 类、Decorator 类和 Adorner 类 |
子类别 | HeaderedItemsControl 类 |
o HeaderedItemsControl:可包含多个项目(例如字符串、对象或其他元素)并具有标题的ItemsControl
说明 | HeaderedItemsControl 是一种 ItemsControl,可包含多个项目(例如字符串、对象或其他元素)并具有标题。 |
内容属性 | Header, Items, ItemsSource |
内容模型信息 | 控件内容模型概述 |
属于此类型系列的类型 | HeaderedItemsControl, MenuItem, TreeViewItem, ToolBar |
可包含 HeaderedItemsControl 类型的类型 | borderbox 通常,MenuItem 对象用作 Menu 元素的子元素;TreeViewItem 对象用作 TreeView 元素的子元素;ToolBar 对象用作 ToolBarTray 的子元素。 |
∙ Panel内容模型
System.Windows.Controls.Panel抽象类:为所有 Panel 元素提供基类。使用 Panel 元素在 Windows Presentation Foundation (WPF) 应用程序中放置和排列子对象。
说明 | Panel 是一种 FrameworkElement,它用于定位和排列子对象。 |
内容属性 | Children |
主内容类型 | 一个或多个 UIElement 对象。 |
内容模型信息 | Panel 内容模型概述 |
属于此类型系列的类型 | Canvas, DockPanel, Grid, TabPanel, ToolBarOverflowPanel, StackPanel, ToolBarPanel, UniformGrid, VirtualizingPanel, VirtualizingStackPanel, WrapPanel |
可包含 Panel 类型的类型 | ContentControl 类、HeaderedContentControl 类、ItemsControl 类、HeaderedItemsControl 类、Panel 类、Decorator 类和 Adorner 类 |
∙ Sharp模型
System.Windows.Sharps.Sharp抽象类:为 Ellipse、Polygon 和 Rectangle 之类的形状元素提供基类
System.Windows.Sharps.Sharp抽象类:为 Ellipse、Polygon 和 Rectangle 之类的形状元素提供基类
∙ Decorator模型
System.Windows.Controls.Decorator类:提供在单个子元素(如 Border 或 Viewbox)上或周围应用效果的元素的基类
System.Windows.Controls.Decorator类:提供在单个子元素(如 Border 或 Viewbox)上或周围应用效果的元素的基类
说明 | Decorator 是一种 FrameworkElement,它将效果应用于单一子 UIElement 之上或周围。 |
内容属性 | Child |
主内容类型 | 单一 UIElement |
内容模型信息 | Decorator 内容模型概述 |
属于此类型系列的类型 | ButtonChrome, ClassicBorderDecorator, ListBoxChrome, SystemDropShadowChrome, Border, InkPresenter, BulletDecorator, Viewbox, AdornerDecorator |
可包含 Decorator 类型的类型 | ContentControl 类、HeaderedContentControl 类、ItemsControl 类、HeaderedItemsControl 类、Panel 类、Decorator 类和 Adorner 类 |
WPF and Silverlight 学习笔记(十一): WPF控件内容模型
WPF控件内容模型主要指派生于System.Windows.Controls.Control类的各种控件,其主要分为四部分:
∙ ContentControl
∙ HeaderedContendControl
∙ ItemsControl
∙ HeaderedItemsControl
其继承关系请参考我上一篇博客的内容。
这四个类用作为 WPF 中大多数控件的基类。使用这些内容模型的类可以包含相同类型的内容,并以相同的方式处理该内容;可以放置在某个 ContentControl(或从 ContentControl 继承的类)中的任何类型的对象都可以放置在具有其他三个内容模型中的任何一个的控件中。如:
1: <Window x:Class="WPFControlContentModule.winOverView"
2: xmlns="schemas.microsoft/winfx/2006/xaml/presentation"
3: xmlns:x="schemas.microsoft/winfx/2006/xaml"
4: Title="控件内容模型概述" Height="300" Width="400">
5: <Grid>
6: <Grid.ColumnDefinitions>
7: <ColumnDefinition />
8: <ColumnDefinition />
9: </Grid.ColumnDefinitions>
10: <Grid.RowDefinitions>
11: <RowDefinition />
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论