Windows Presentation Foundation Introduction(II) - User Interfaces Part I
来源:互联网 发布:mac版ps cs5序列号 编辑:程序博客网 时间:2024/06/11 10:45
/*by Jiangong SUN*/
Page Layout:
WPF provides layout support by using a common infrastructure that includes layout classes such asDockPanel, Grid, StackPanel, and WrapPanel.
WPF Page Layout Model: Mesurement Pass, Arrangement Pass
During the measurement pass of the layout process, the parent Panel object evaluates each member of the Children collection to determine its DesiredSize.
During the arrangement pass, the parent Panel element uses the DesiredSize of each child object and any additional offset properties, such as margin and alignment, to determine the final size of the child object and to place the child within its layout slot.
Therefore, you should avoid triggering the layout process unless it is necessary to avoid degrading the performance of your application
You can use a LayoutTransform to affect the content of a UI, but if the result of the transform does not need to affect the position of other elements, youshoulduse aRenderTransform instead because it does not invoke the layout process.
Page Layout Classes:
All layout classes that derive from the Panel class support the FlowDirection property that you can use to dynamically update the layout of content based on a user's locale or language settings.
WPF provides the following 6 layout classes that are designed specifically for creating UIs:
Canvas. Defines an area within which you can position child elements by coordinates that are relative to the Canvas area. (X, Y 坐标)
<Canvas> <TextBlock FontSize="14" Canvas.Top="20" Canvas.Left="10">Hello World!</TextBlock> <TextBlock FontSize="22" Canvas.Top="40" Canvas.Left="20">Canvas example.</TextBlock> </Canvas>
DockPanel. Defines an area within which you can arrange child elements either horizontally or vertically, relative to each other.
<DockPanel LastChildFill="True"> <Border DockPanel.Dock="Left" Width="20" Background="AntiqueWhite"></Border> <Button DockPanel.Dock="Right">Dock = "Right"</Button> <Button DockPanel.Dock="Top">Dock = "Top"</Button> <Button DockPanel.Dock="Top">Dock = "Top"</Button> <Button DockPanel.Dock="Bottom">Dock = "Bottom"</Button> <Button DockPanel.Dock="Left">Dock = "Left"</Button> <Button>"Fill" content</Button> </DockPanel>
Grid. Defines a flexible grid area that consists of columns and rows.
StackPanel. Arranges child elements into a single line that can be oriented horizontally or vertically.
VirtualizingStackPanel. Exhibits the same behavior as the StackPanel but keeps in memory only child elements that are currently visible.
WrapPanel. Positions child elements in sequential position, breaking content to the next line at the edge of the containing box. Sequential ordering occurs from top to bottom or right to left, depending on the value of the Orientation property.
<WrapPanel Background="LightBlue" Width="220" Height="100"> <Button Width="200">Button 1</Button> <Button>Button 2</Button> <Button Width="100">Button 3</Button> <Button>Button 4</Button> </WrapPanel>
Layout Best practices:
Avoid fixed positions - use the Alignment properties in combination with Margin to position elements in a panel
Avoid fixed sizes - set the Width and Height of elements to Auto whenever possible.
Don't abuse the canvas panel to layout elements. Use it only for vector graphics.
Use a StackPanel to layout buttons of a dialog
Use a GridPanel to layout a static data entry form. Create a Auto sized column for the labels and a Star sized column for the TextBoxes.
Use an ItemControl with a grid panel in a DataTemplate to layout dynamic key value lists.
Use the SharedSize feature to synchronize the label widths.
(from http://wpftutorial.net/LayoutProperties.html)
Content Control: they can just contain only one content.
For example:
<Button>This works!</Button><Button>This will generate error: The property 'Content' is set more than once<Border></Border></Button>
Common content controls:
Button, CheckBox, GroupItem, Label, RadioButton, RepeatButton, ToggleButton, ToolTip
HeaderedContentControl is a specialized ContentControl that exposes the Content property and also exposes a Header property
Items Control: The ItemsControl class contains a collection of objects that are specified by using either the ItemSource property or the Items property.
Common items controls: ComboBox, ListBox, Menu, StatusBar, TabControl, ToolBar, TreeView
TreeView Example:
<TreeView> <TreeViewItem Header="Employee1"> <TreeViewItem Header="Jesper"/> <TreeViewItem Header="Aaberg"/> <TreeViewItem Header="12345"/> </TreeViewItem> <TreeViewItem Header="Employee2"> <TreeViewItem Header="Dominik"/> <TreeViewItem Header="Paiha"/> <TreeViewItem Header="98765"/> </TreeViewItem></TreeView>
Host Windows Forms Controls:
WPF enables you to host Windows Forms controls in your WPF applications by using theWindowsFormsHostclass in theSystem.Windows.Forms.Integration namespace.
To use Windows Forms controls in your WPF applications, you must add references to the following assemblies:
WindowsFormsIntegration.dll (C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0)
System.Windows.Forms.dll (add reference)
The System.Windows.Forms assembly contains the Windows Forms controls and the WindowsFormsIntegration assembly provides the interoperability between the Windows Forms controls and the WPF application.
xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"xmlns:wfi="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"><wfi:WindowsFormsHost><wf:DateTimePicker x:Name="startDate" /></wfi:WindowsFormsHost>
Hope this helps! Enjoy coding!
- Windows Presentation Foundation Introduction(II) - User Interfaces Part I
- Windows Presentation Foundation Introduction(III) - User Interfaces Part II
- Windows Presentation Foundation Introduction(I) - Overview
- Building User Interfaces by Using Windows® Presentation Foundation
- Introduction to Windows Presentation Foundation
- Windows Presentation Foundation Introduction(IV) - Data Binding
- Windows Presentation Foundation Introduction(V) - Configuration & Deployment
- Foundations of WPF: An Introduction to Windows Presentation Foundation
- Windows Presentation Foundation 巡游
- Windows Presentation Foundation 巡游
- Windows Presentation Foundation 巡游
- Windows Presentation Foundation 用户指南
- Windows Presentation Foundation
- WPF----Windows Presentation Foundation
- Windows Presentation Foundation(WPF)
- Windows Presentation Foundation
- Windows Presentation Foundation Unleashed
- Essential Windows Presentation Foundation
- 双链表的插入 删除
- ASP.NET中利用DataList实现图片无缝滚动
- 设计模式(16)-行为型-迭代器模式(Iterator)
- 设计模式(17)-行为型-中介者模式(Mediator)
- 过去的得失,别太在意。
- Windows Presentation Foundation Introduction(II) - User Interfaces Part I
- 享受编程
- 数组中出现次数超过一半的数字
- C++第13周项目1——Fibnacci序列
- C++第13周项目2——进制转换
- 配置Flash CS5.5支持FLASH PLAYER11 和 AIR3.0
- C++第13周项目3——汉诺塔
- 黑马程序员_多线程练习
- C++第13周项目2扩展——最大公约数