【WPF】1、 基本控件的简介

摘要:
WPF已间断使用。默认情况下可见的控件1和边框放置在其他控件内,以便为其他控件绘制边框。其他容器必须支持双重标签。BorderBrush边框画笔颜色BorderThickness边框宽度边框2,按钮按钮。用于按钮的图片应设置为图像,但BackGroup不能设置为图像。如果只设置了BackGroud,则按钮的鼠标样式仍然是picture button 3,Calendar 4,Canvas Canvas控件,用于绘图。子控件根据左/右和上/下获取相对于画布边界的位置。常规控件是真实文本中的文本。此控件显示Content属性中的文本。

WPF一直都是断断续续的使用。偶尔用到一下。但是每次间隔比较长,需要重新学习,就写了这篇日志。以后有问题,看这个就可以了解各大概,然后针对细节再另外想办法。

微软的东西真心好,如果什么都不懂,可以直接用控件快速上手,如果有高级要求,可以调底层的库,自己实现。

默认可以看到的控件

1、Border 放到其他控件内部,给其他控件画边框,其他容器必须支持双标签。

BorderBrush 边框笔刷颜色

BorderThickness 边框宽度

【WPF】1、 基本控件的简介第1张【WPF】1、 基本控件的简介第2张
<Border
     BorderBrush="Chocolate" BorderThickness="1">
</Border>
Border

2、Button 按钮,按钮用图片应该设置内容为Image,而不能设置BackGroud为Image,如果只设置背景,按钮鼠标经过样式还在

【WPF】1、 基本控件的简介第3张【WPF】1、 基本控件的简介第4张
            <Button>
                <Image Source="imagestn.jpg"></Image>
            </Button>
    
图片按钮

3、Calendar 日历

4、Canvas 画布控件,用来画图的。也可以用来做容器用。子控件根据left/right和top/bottom来获取相对与canvas边界的定位。

【WPF】1、 基本控件的简介第5张【WPF】1、 基本控件的简介第6张
    <Canvas >
        <Button Content="确认" Canvas.Left="305" Canvas.Top="83" Width="75"/>
        <TextBox Height="23" Canvas.Left="180" Canvas.Top="83" Width="120"/>
    </Canvas>
Canvas做容器

5、Checkbox 复选框

【WPF】1、 基本控件的简介第7张【WPF】1、 基本控件的简介第8张
<CheckBox Margin="5" Click="点击事件">是否需要验证码</CheckBox>
CheckBox

6、Combobox 下拉列表框

【WPF】1、 基本控件的简介第9张【WPF】1、 基本控件的简介第10张
<UserControl x:Class="GameProject.UserControls.ColorSelector"
        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"
        mc:Ignorable="d"
             Loaded="UserControl_Loaded"
             >
    <ComboBox x:Name="box" SelectionChanged="Box_SelectionChanged" SelectedValuePath="Color">
    </ComboBox>
</UserControl>
颜色选择器Demo
【WPF】1、 基本控件的简介第11张【WPF】1、 基本控件的简介第12张
using System.Reflection;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Shapes;

namespace GameProject.UserControls
{
    /// <summary>
    /// ColorSelector.xaml 的交互逻辑
    /// </summary>
    public partial class ColorSelector : UserControl
    {
        public class ColorComboBoxItem : ComboBoxItem
        {
            public Color Color { get; set; }
        }

        public Color SelectedColor { get; set; }

        public ColorSelector()
        {
            InitializeComponent();
        }

        private void Init()
        {
            box.Items.Add(new ComboBoxItem()
            {
                Content = "--请选择颜色--",
                IsSelected = true
            });

            PropertyInfo[] props = typeof(Colors).GetProperties();
            foreach (PropertyInfo prop in props)
            {
                //根据Colors内颜色的个数创建ColorListBoxItem
                box.Items.Add(GetItem(prop.Name, (Color)prop.GetValue(null, null)));
            }
        }

        private ComboBoxItem GetItem(string text, Color color)
        {
            StackPanel stack = new StackPanel
            {
                Orientation = Orientation.Horizontal
            };

            //添加颜色方块
            var rect = new Rectangle
            {
                Width = ActualWidth - 12,
                Height = ActualHeight - 12,
                Margin = new System.Windows.Thickness(2),
                Stroke = SystemColors.WindowTextBrush,
                Fill = new SolidColorBrush(color)
            };
            stack.Children.Add(rect);

            //添加TextBlock
            var particalText = new TextBlock
            {
                VerticalAlignment = VerticalAlignment.Center,
                Text = text
            };
            stack.Children.Add(particalText);

            var item = new ColorComboBoxItem()
            {
                Color = color,
                Content = stack,
            };
            return item;
        }

        private void UserControl_Loaded(object sender, RoutedEventArgs e)
        {
            Init();
        }

        private void Box_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var comboxItem = sender as ComboBox;
            var value = comboxItem.SelectedValue;
            if (value != null)
            {
                SelectedColor = (Color)value;
            }
        }
    }
}
颜色选择器Demo 后台代码

7、ContentControl 内容控件。button、checkbox等的基类。一般控件都是现实Text中的文本,这个控件显示Content属性中的文本。

8、DataGrid 显示表格数据。水很深。详情见MSDN:https://msdn.microsoft.com/en-us/library/system.windows.controls.datagrid(VS.100).aspx

9、DataPicker 日期选择控件,带日历。

10、DockPanel 停靠布局容器。子控件就像一个个船,定义DockPanel.Dock属性表示向上/下/左/右靠过去。如VS的布局方式大致如下:

【WPF】1、 基本控件的简介第13张【WPF】1、 基本控件的简介第14张
<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="&lt;-"></Button>
                <Button Content="-&gt;"></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>
DockPanel

11、DocumentViewer

12、Ellipse 实心椭圆

13、Expander 下拉框

14、Frame 是一种支持导航的内容控件

【WPF】1、 基本控件的简介第15张【WPF】1、 基本控件的简介第16张
<Frame NavigationUIVisibility="Hidden" HorizontalContentAlignment="Left" VerticalContentAlignment="Top" Content="{Binding Page}"></Frame>
不显示导航,并且内容是一个Page控件,用了绑定语法

15、Grid 网格布局控件。内部分两部分:

<Grid.RowDefinitions>和<Grid.ColumnDefinitions>定义行列,行列的宽高有两种表示方法,按尺寸和比例。按比例,表示方式是加 数字+*,计算方式是,如下面的例子,三个列的尺寸比是1:1:2。尺寸和比例可以混用,会先将尺寸扣除,剩下的按比例显示。

控件部分需要指定所在行列,可以设置跨行(Grid.RowSpan属性)和跨列(Grid.ColumnSpan属性)。

【WPF】1、 基本控件的简介第17张【WPF】1、 基本控件的简介第18张
<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>
Grid

16、GridSplitter 分割线

17、GroupBox 具有标题的容器盒子

18、Image 图片控件 source属性设置图片路径

19、Label 文本标签 不支持换行 Content属性内为显示的文本

20、ListBox 列表选择组件,可以横向也可以竖向,能获取选中值。可使用Separator控件做分隔符。

21、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。

22、MediaElement 播放视频音频,默认是界面上什么都没有,需要再代码中调用Play()方法才会播放。

23、Menu 菜单栏,一般放在顶部,如vs顶部,标题下面那排。

24、PasswordBox 密码输入框。输入内容显示为*******

25、ProgressBar 进度条。value属性表示进度,范围0-100

26、RadioButton 单选按钮

27、Rectangle 实心矩形

28、RichTextBox 富文本输入框

29、ScrollBar 滚动条。没见过单独用的,一般都直接再外面套一个ScrollViewer

30、ScrollViewer 带滚动条的容器。

【WPF】1、 基本控件的简介第19张【WPF】1、 基本控件的简介第20张
<ScrollViewer HorizontalAlignment="Stretch"  Name="MapscrollViewer" VerticalAlignment="Stretch" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" >
    <ScrollViewer.Content>
        <Image Name="Map"></Image>
    </ScrollViewer.Content>
</ScrollViewer>
ScrollViewer中展示图片

小细节,ScrollViewer的大小和ScrollViewer.Content的大小不一致,存在间隔。

31、Separtor 竖向分隔线,可以用于ToolBar中分隔按钮组。

32、Slider 滑动条,当用户关注相对大小,而不是具体的数字时使用。常用语音量控制等。

33、StackPanel 堆叠容器。子控件每个都占一行或一列。Orientation属性设置横向Horizontal和竖向Vertical

34、StatusBar 状态栏,一般放在底部,显示各种状态信息,如VS下面那排。

35、TabControl tab选项卡和对应容器

36、TextBlock 文本块  Text属性为显示内容,TextWrapping="Wrap"表示换行显示文本。

37、TextBox 文本框,基本控件,没什么好解释的

【WPF】1、 基本控件的简介第21张【WPF】1、 基本控件的简介第22张
<TextBlock Name="coordinate" HorizontalAlignment="Stretch" VerticalAlignment="Bottom"></TextBlock>
TextBox

38、ToolBar 工具栏,单独用时独占一行。

39、TolBarPanel 继承自StackPanel,工具栏容器。

40、ToolBarTray 工具栏集合,当有多个工具栏时使用。内部的ToolBar不再独占一行。

41、TreeView 树形视图。

【WPF】1、 基本控件的简介第23张【WPF】1、 基本控件的简介第24张
  <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>
TreeView

42、Viewbox 主要为子控件提供拉伸,缩放等功能。感觉没什么卵用,子控件都有Stretch属性控制拉伸的。

43、WebBrowser 内置Web浏览器(IE内核,不装IE不能用)

44、WindowsFormsHost 这个里面支持WinForm控件。

45、WrapPanel 包裹块装元素的容器。子控件是一块一块的,从左往右排列,如果超过右边框,则换行;超过下边界,则隐藏。

【WPF】1、 基本控件的简介第25张【WPF】1、 基本控件的简介第26张
    <WrapPanel Height="291" Width="542">
        <Calendar/>
        <Calendar/>
        <Calendar/>
        <Calendar/>
    </WrapPanel>
WrapPanel

默认不能看到的控件

1、文档

DocumentViewerBase 提供用于显示固定内容或流动内容(分别由 System.Windows.Documents.FixedDocument 或 System.Windows.Documents.FlowDocument 表示)的查看器的基类。

DocumentPageView 表示已分页 System.Windows.Documents.DocumentPage 的视区。

FlowDocumentPageViewer 表示一个用于在固定查看模式下查看流内容的控件,该模式一次显示一页内容。

FlowDocument 用高级文档功能(如分页和列)承载流内容和设置流内容格式。 定义一个文档,文档样式。

免责声明:文章转载自《【WPF】1、 基本控件的简介》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JS异步编程movable-view组件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

web页面弹出窗口代码大全

//-----------按钮提示框----------// <input type="button" name="btn2" id="btn2" value="删除" onclick="return confirm('Yes/No');); //-----------按钮提示框----------// <input type="but...

WPF简介

  要赢得世界,必须在恰当的时间做出恰当的事。这一点,微软做到了。历经微软 DOS,Win 31, Windows 95, Windows 98, Windows 2000, Windows XP, 一路走来,一次比一次热闹,一个比一个精彩、炫丽。Windows Vista的宣传更是轰轰烈烈,喧嚣日上。初见Windows Vista,都会被它的酷炫界面所...

SWFUpload 按钮显示问题

问题: 今天遇到一个这样的问题,我用Vs2010打开用SWFUpload上传文件的网页时,按钮显示不出来,试了好多方法,终于被我找到了! 解决方法: 原来是vs2010自带的Asp.net Development Server 浏览的问题, 只要把网页发布到IIS上运行就没有问题了,记录下来,以防以后出现类似的问题!...

关于防止表单多次提交~按钮多次点击~限制点击事件

为了防止用户多次提交表单我们可以有多种处理方法,以下做一些简单的说明 1.通过css设置属性 pointer-events: none;   这个属性是css的特殊属性,他更像是javaScript,它能: 阻止用户的点击动作产生任何效果 阻止缺省鼠标指针的显示 阻止CSS里的 hover 和 active 状态的变化触发事件 阻止JavaScript点...

Qt 设置窗口属性setWindowFlags函数

Qt 设置窗口属性setWindowFlags函数 说明:setWindowFlags函数就是设置窗口属性,本博客主要分析此函数的参数 本博客转载CSDN博主「hjhomw」的原创文章。原文链接:https://blog.csdn.net/hejun_haitao/java/article/details/50815695 主要是记录一下项目中遇到的问题...

WPF RichTextBox

FlowDocument RunFlowDoc = new FlowDocument(); Paragraph Runparagraph = new Paragraph(); RunFlowDoc.Blocks.Add(Runparagraph); txtRichBox.Document = RunFlowDoc; Run r = new Run(c...