WPF一直都是断断续续的使用。偶尔用到一下。可是每次间隔比较长,须要从新学习,就写了这篇日志。之后有问题,看这个就能够了解各大概,而后针对细节再另外想办法。canvas
微软的东西真心好,若是什么都不懂,能够直接用控件快速上手,若是有高级要求,能够调底层的库,本身实现。windows
一、Border 放到其余控件内部,给其余控件画边框,其余容器必须支持双标签。浏览器
二、Button 按钮,按钮用图片应该设置内容为Image,而不能设置BackGroud为Image,若是只设置背景,按钮鼠标通过样式还在app
<Button> <Image Source="\images\btn.jpg"></Image> </Button>
三、Calendar 日历ide
四、Canvas 画布控件,用来画图的。也能够用来作容器用。子控件根据left/right和top/bottom来获取相对与canvas边界的定位。工具
<Canvas > <Button Content="确认" Canvas.Left="305" Canvas.Top="83" Width="75"/> <TextBox Height="23" Canvas.Left="180" Canvas.Top="83" Width="120"/> </Canvas>
五、Checkbox 复选框布局
<CheckBox Margin="5" Click="点击事件">是否须要验证码</CheckBox>
六、Combobox 下拉列表框学习
七、ContentControl 内容控件。button、checkbox等的基类。通常控件都是现实Text中的文本,这个控件显示Content属性中的文本。spa
八、DataGrid 显示表格数据。水很深。详情见MSDN:https://msdn.microsoft.com/en-us/library/system.windows.controls.datagrid(VS.100).aspx3d
九、DataPicker 日期选择控件,带日历。
十、DockPanel 停靠布局容器。子控件就像一个个船,定义DockPanel.Dock属性表示向上/下/左/右靠过去。如VS的布局方式大体以下:
<DockPanel> <!--停靠布局,让菜单栏和工具栏位于窗口顶部--> <Menu DockPanel.Dock="Top"> <MenuItem Header="文件(F)"> <!--菜单项为MenuItem,文字使用属性 Header--> <MenuItem Header="新建"> <MenuItem Header="项目"></MenuItem> <MenuItem Header="文件"></MenuItem> <MenuItem Header="从现有代码建立项目"></MenuItem> </MenuItem> <MenuItem Header="打开"></MenuItem> <MenuItem Header="起始页"></MenuItem> <Separator /> <MenuItem Header="添加"></MenuItem> <Separator /> <MenuItem Header="关闭"></MenuItem> <MenuItem Header="关闭解决方案"></MenuItem> </MenuItem> <MenuItem Header="编辑"></MenuItem> <MenuItem Header="视图"></MenuItem> <MenuItem Header="项目"></MenuItem> <MenuItem Header="生成"></MenuItem> </Menu> <ToolBarTray DockPanel.Dock="Top"> <ToolBar> <!--ToolBar和StatusBar就是一个容器--> <Button Content="<-"></Button> <Button Content="->"></Button> <Separator /> <Button Content="新建项目"></Button> <Button Content="打开文件"></Button> <Button Content="保存"></Button> <Button Content="所有保存"></Button> <Separator /> <Button Content="撤销"></Button> <Button Content="重作"></Button> </ToolBar> <ToolBar> <Button Content="注释"></Button> <Button Content="取消对选中行的注释"></Button> <Separator /> <Button Content="在当前标签切换书签"></Button> <Button Content="将插入符号移动到上一书签"></Button> </ToolBar> </ToolBarTray> <StatusBar DockPanel.Dock="Bottom" Height="20"> <TextBlock Text="已保存的项 行 41 列 54 字符 53 Ins"></TextBlock> </StatusBar> <TextBox DockPanel.Dock="left" Text="工具箱" Width="100"></TextBox> <TextBox DockPanel.Dock="left" Text="MainWindow.xaml" Width="400"></TextBox> <TextBox DockPanel.Dock="left" Text="解决方案资源管理器"></TextBox> </DockPanel>
十一、DocumentViewer
十二、Ellipse 实心椭圆
1三、Expander 下拉框
1四、Frame 是一种支持导航的内容控件
<Frame NavigationUIVisibility="Hidden" HorizontalContentAlignment="Left" VerticalContentAlignment="Top" Content="{Binding Page}"></Frame>
1五、Grid 网格布局控件。内部分两部分:
<Grid.RowDefinitions>和<Grid.ColumnDefinitions>定义行列,行列的宽高有两种表示方法,按尺寸和比例。按比例,表示方式是加 数字+*,计算方式是,以下面的例子,三个列的尺寸比是1:1:2。尺寸和比例能够混用,会先将尺寸扣除,剩下的按比例显示。
控件部分须要指定所在行列,能够设置跨行(Grid.RowSpan属性)和跨列(Grid.ColumnSpan属性)。
<Grid> <Grid.RowDefinitions> <!--定义行,每一个RowDefinition都是一行--> <RowDefinition Height="*"/> <RowDefinition Height="*"/> <RowDefinition Height="2*"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <!--定义列,每个ColumnDefinition都是一列--> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> <ColumnDefinition Width="2*"/> </Grid.ColumnDefinitions> <Button Content="Button" Grid.Column="0" Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="top" Width="75" /> <Button Content="Button" Grid.Column="0" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="top" Width="75"/> <Button Content="Button" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Left" VerticalAlignment="top" Width="75" /> <Button Content="Button" Grid.Column="1" Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="top" Width="75" /> <Button Content="Button" Grid.Column="1" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="top" Width="75"/> <Button Content="Button" Grid.Column="1" Grid.Row="2" HorizontalAlignment="Left" VerticalAlignment="top" Width="75" /> </Grid>
1六、GridSplitter 分割线
1七、GroupBox 具备标题的容器盒子
1八、Image 图片控件 source属性设置图片路径
1九、Label 文本标签 不支持换行 Content属性内为显示的文本
20、ListBox 列表选择组件,能够横向也能够竖向,能获取选中值。可以使用Separator控件作分隔符。
2一、ListView 列表视图。分视图显示方式( <ListView.View>,里面放ViewBase类型的控件,如GridView控件,只能放一个)和数据源( <ListView.ItemsSource>)两个部分。若是只是显示数据的,单用GridView就好了,因此这个经常使用与一个数据源,存在多个View的状况。提供右键菜单。由于涉及后台代码,在这里,不提供demo,能够参考微软的demo:http://download.microsoft.com/download/B/2/5/B25C4C6A-97FE-4014-9D4B-B39607BA9A12/wpf_samples/ListViewCustomView.exe。
2二、MediaElement 播放视频音频,默认是界面上什么都没有,须要再代码中调用Play()方法才会播放。
2三、Menu 菜单栏,通常放在顶部,如vs顶部,标题下面那排。
2四、PasswordBox 密码输入框。输入内容显示为*******
2五、ProgressBar 进度条。value属性表示进度,范围0-100
2六、RadioButton 单选按钮
2七、Rectangle 实心矩形
2八、RichTextBox 富文本输入框
2九、ScrollBar 滚动条。没见过单独用的,通常都直接再外面套一个ScrollViewer
30、ScrollViewer 带滚动条的容器。
<ScrollViewer HorizontalAlignment="Stretch" Name="MapscrollViewer" VerticalAlignment="Stretch" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" > <ScrollViewer.Content> <Image Name="Map"></Image> </ScrollViewer.Content> </ScrollViewer>
小细节,ScrollViewer的大小和ScrollViewer.Content的大小不一致,存在间隔。
3一、Separtor 竖向分隔线,能够用于ToolBar中分隔按钮组。
3二、Slider 滑动条,当用户关注相对大小,而不是具体的数字时使用。经常使用语音量控制等。
3三、StackPanel 堆叠容器。子控件每一个都占一行或一列。Orientation属性设置横向Horizontal和竖向Vertical
3四、StatusBar 状态栏,通常放在底部,显示各类状态信息,如VS下面那排。
3五、TabControl tab选项卡和对应容器
3六、TextBlock 文本块 Text属性为显示内容,TextWrapping="Wrap"表示换行显示文本。
3七、TextBox 文本框,基本控件,没什么好解释的
<TextBlock Name="coordinate" HorizontalAlignment="Stretch" VerticalAlignment="Bottom"></TextBlock>
3八、ToolBar 工具栏,单独用时独占一行。
3九、TolBarPanel 继承自StackPanel,工具栏容器。
40、ToolBarTray 工具栏集合,当有多个工具栏时使用。内部的ToolBar再也不独占一行。
4一、TreeView 树形视图。
<TreeView> <TreeViewItem Header="经常使用WPF控件" IsExpanded="True"> <TreeViewItem Header="指针" /> <TreeViewItem Header="Border" /> <TreeViewItem Header="Button" /> <TreeViewItem Header="CheckBox" /> <TreeViewItem Header="ComboBox" /> <TreeViewItem Header="Grid" /> <TreeViewItem Header="Image" /> <TreeViewItem Header="Label" /> </TreeViewItem> <TreeViewItem Header="全部WPF控件" IsExpanded="True"> <TreeViewItem Header="指针" /> <TreeViewItem Header="Border" /> <TreeViewItem Header="Button" /> <TreeViewItem Header="Canvas" /> <TreeViewItem Header="CheckBox" /> <TreeViewItem Header="ComboBox" /> <TreeViewItem Header="ContentControl" /> <TreeViewItem Header="DockPanel" /> <TreeViewItem Header="Grid" /> <TreeViewItem Header="Image" /> <TreeViewItem Header="Label" /> </TreeViewItem> <TreeViewItem Header="常规" /> </TreeView>
4二、Viewbox 主要为子控件提供拉伸,缩放等功能。感受没什么卵用,子控件都有Stretch属性控制拉伸的。
4三、WebBrowser 内置Web浏览器(IE内核,不装IE不能用)
4四、WindowsFormsHost 这个里面支持WinForm控件。
4五、WrapPanel 包裹块装元素的容器。子控件是一块一块的,从左往右排列,若是超过右边框,则换行;超过下边界,则隐藏。
<WrapPanel Height="291" Width="542"> <Calendar/> <Calendar/> <Calendar/> <Calendar/> </WrapPanel>
一、文档
DocumentViewerBase 提供用于显示固定内容或流动内容(分别由 System.Windows.Documents.FixedDocument 或 System.Windows.Documents.FlowDocument 表示)的查看器的基类。
DocumentPageView 表示已分页 System.Windows.Documents.DocumentPage 的视区。
FlowDocumentPageViewer 表示一个用于在固定查看模式下查看流内容的控件,该模式一次显示一页内容。
FlowDocument 用高级文档功能(如分页和列)承载流内容和设置流内容格式。 定义一个文档,文档样式。