WPF(二)举例讲解WPF布局
来源:互联网 发布:mac 装win10 启动黑屏 编辑:程序博客网 时间:2024/05/16 19:56
WPF(二)举例讲解WPF布局
WPF中的控件布局
就讲六个控件是杂个用的,包括: Canvas, DockPanel, Grid, StackPanel, WrapPanel, VirtualizingStackPanel
1. Canvas :简单地设置坐标值来布局
Canvas很单纯地设置其子控件相对于它的Top, Left, Bottom., Right值来进行定位其子控件.
例子:
<Canvas>
<Button Canvas.Top="10" Canvas.Left="10" Content="Canvas 进行 (x,y) 定位(10,10)" />
</Canvas>
效果图:
2, DockPanel:
为其子控件提供相对的停靠位置, 包括向左停靠(Dock.Left),向右停靠(Dock.Right),向下停靠(Dock.Bottom),向上停靠.。DockPanel 使您在停靠项时,无需担心它们的确切 (x,y) 位置
例子:
<DockPanel Grid.Column="1" Grid.Row="0">
<Menu DockPanel.Dock="Top">
<MenuItem Header="Menu" >
<MenuItem Header="open" />
<MenuItem Header="save" />
</MenuItem>
<MenuItem Header="Edit" />
</Menu>
<TreeView>
<TreeViewItem Header="DockPanel"/>
<TreeViewItem Header="香港电影">
<TreeViewItem Header="无间道" />
<TreeViewItem Header="伤城" />
<TreeViewItem Header="和平饭店" />
<TreeViewItem Header="阿郎的故事" />
<TreeViewItem Header="秋天的童话" />
<TreeViewItem Header="赌神" />
</TreeViewItem>
<TreeViewItem Header="欧美电影"/>
</TreeView>
<ListBox>
<ListBoxItem>DockPanel 使您在停靠项时</ListBoxItem>
<ListBoxItem>无需担心它们的确切 (x,y) 位置</ListBoxItem>
<ListBoxItem>listBoxItem</ListBoxItem>
</ListBox>
</DockPanel>
效果图:
3. Grid:表格布局
Grid允许我们通过自定义行列来进行布局,主要作用就是画格格,网格定位.
通过设置Columns和Rows的属性,通过定义Grid的ColumnDifinitions和RowDifinitions来实现对于表格的定义,然后根据Grid.Column和Grid.Row的对象来制定位置的方式实现布局.
例子:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Button x:Name="panel1" Grid.Row="0" Grid.Column="1" Background="Red"></Button>
<Button x:Name="panel2" Grid.Row="1" Grid.Column="0" Background="Red"></Button>
<Button x:Name="panel3" Grid.Row="1" Grid.Column="2" Background="Red"></Button>
<Button x:Name="panel4" Grid.Row="2" Grid.Column="1" Background="Red"></Button>
<Button x:Name="panel5" Grid.Row="1" Grid.Column="1" Content="Grid画格格"></Button>
<Button x:Name="panel6" Grid.Row="0" Grid.Column="0" Content="网格定位"></Button>
</Grid>
效果图:
4. StackPanel :按照水平线方向或垂直线方向排列控件
StackPanel允许你按照指定的方向其中添加子控件
Orientation=" Horizontal"表示纵向
Orientation="Vertical"表示横向
例子:
<StackPanel Orientation="Horizontal" Background="silver" Margin="20">
<!--Orientation="Vertical"表示纵向-->
<Label Margin="5" Content="提供一个" />
<TextBox Margin="5" Text="从左至右" BorderBrush="Blue" Foreground="Black" Width="100"/>
<Button Name="test" Width="100" Height="50" Content="或从上至下"/>
<Button Content="放置内容的堆栈模型"/>
<Label Name="testlabel" Content="!"/>
</StackPanel>
效果图:
5. WrapPanel: 自动换行子控件的布局
WrapPanel 模型是资源管理器窗口的右侧窗格,使您可以处理在当前行已满之后流入新行中的项。
例子:
<WrapPanel Background="Silver" Margin="40">
<Button /> <Button /> <Button /> <Button /> <Button /> <Button /> <Button />
<Button /> <Button /> <Button /> <Button /> <Button /> <Button /> <Button />
<Button /> <Button /> <Button /> <Button /> <Button /> <Button /> <Button />
<Button /> <Button /> <Button /> <Button /> <Button /> <Button /> <Button />
</WrapPanel>
效果图:
(小块块就是Button)
6. VirtualizingStackPanel
可视化是一种改善数据密集型应用程序性能的很好方式。可通过VirtualizingStackPanel控件获得 WPF 中的 UI 可视化。对于大量的项而言,这要比 StackPanel 快 70 倍。
我们在加载字体列表时可能会遇到了一个让人崩溃的问题:由于系统字体可能较多(可能有好几百项),导致使用ComboBox显示字体列表异常缓慢,这是由于ComboBox在展开列表时绘制了列表中的每一项,为了避免这个问题,我们可以使用 VirtualizingStackPanel来代替ComboBox默认的项目面板StackPanel:
然后速度就很快了,与仅仅加载少量项目速度一样快,因为其只绘制了当前被显示的项。
例子:
<Grid>
<ComboBox x:Name="comboboxFontList1" VerticalAlignment="Top">
<ComboBox x:Name="comboboxFontList2" VerticalAlignment="Top">
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel />
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
</ComboBox>
</ComboBox>
</Grid>
效果图:就是ComboBox里面夹ComboBox
- WPF(二)举例讲解WPF布局
- WPF(三)举例讲解WPF样式
- WPF(五)举例讲解WPF数据绑定
- WPF(四)举例讲解WPF控件模版
- WPF(一)举例讲解XML语法和格式
- WPF(布局)
- UI 布局(WPF)
- WPF布局
- WPF布局
- WPF布局
- wpf布局
- WPF布局
- WPF 布局
- WPF教程(二) WPF vs WinForms
- wpf笔记(二)
- WPF小结(一&二) 布局和控件
- WPF(Grid与布局)
- WPF布局篇(三)
- 学习
- 3G网络的SUPLA-GPS定位技术
- [转]Android WiFi 电源管理
- 毕业设计:音视频通信软件的设计与实现(可保护TCP传输的单人通信与网络逻辑完全树服务模型的及时会议系统)
- Howto用自己的toolchain编译opencore
- WPF(二)举例讲解WPF布局
- 表达式树
- 鞋业erp系统主要子系统划分
- 浏览器对网页的两种(三种)解析模式quirks mode、strict mode (Almost Standards Mode)
- VS2010优化
- 如何解释 #define OFFSET(struct_type, member) ((size_t) &((struct_type *) 0)->member)
- vs2005断点失效的问题,
- sql之left join、right join、inner join的区别
- [转]Android Power Management