WPF--控件(代码讲解)

这篇博客详细介绍了WPF中的控件使用,包括菜单、工具栏、状态栏的基础知识,以及各种控件如Expander、TabControl、Slider、ScrollBar、ProgressBar、TextBox、ListBox、ComboBox、TreeView等的使用方法和代码示例。内容涵盖了容器控件、范围控件、文本编辑器、列表控件和构建控件等多个方面。
摘要由CSDN通过智能技术生成

前言:

粗略而言,使用最多控件的基本为6类,即:
(1)布局控件:可以容纳多个控件或嵌套其他布局控件。有Grid、StackPanel、DockPanel等。他们拥有共同的父类Panel

Panel族控件包含:
StackPanel、UniformGrid、WraPanel……;
内容属性为Children。

(2)内容控件:只能一个其他控件或布局控件作为他的内容。有Window、Button等。他们的父类为ContentControl

ContentControl族控件包含:
Button、Label、CheckBox……;
内容属性的名称为:Content
其中,HeaderedContentControl是ContentControl的派生类。
HeaderedContentControl族控件包含:
Expander、GroupBox、HeaderedContentControl、TabItem;
内容属性为Header和Content。

(3)带标题内容控件:相当于一个内容控件,但可以加一个标题(Header),标题部分亦可容纳一个控件或布局控件。GroupBox、TabItem等是这类控件的典型代表。他们的父类为ComboBoxContentControl

(4)条目控件:可以显示一列数据,一般情况下这列数据的类型都相同。有ListBox、ComboBox等。他们的父类为ItemsControl

ItemsControl族控件包含:
Menu、MenuBase、ComboBox、ItemsControl、ListBox、ListView、TabControl、TreeView、StatusBar……;
内容属性的名称为:Items或ItemsSource。

(5)带标题条目控件:相当于一个条目控件加上一个标题显示区。TreeViewItem、MenuItem都属于此类控件。这类控件的节点显示在其Header区域,子节点则显示在其条目控件区域。他们的控件的父类为:HeaderedItemsControl

HeaderedItemsControl族控件包含:
MenuItem、TreeViewItem、ToolBar;
内容属性为Items,ItemsSource和Header。

(6)特殊内容控件:TextBox等。

补充:

Decorator族:
本族元素是在UI上起装饰效果的。
包含:Border、ViewBox……;
内容属性为Child。

菜单、工具栏和状态栏

菜单与工具栏位于主页面顶部。状态栏位于主页面下方,显示当前页面的状态信息。

1 Menu

WPF菜单可分为Menu和ContextMenu两种。ContextMenu称为上下文菜单,只有当用户发出请求(右击)或按下Shift+F10组合键时,会弹出上下文菜单,故上下文菜单又可称为弹出式菜单,在后面会提到。

创建菜单代码示例:

<DockPanel LastChildFill="False">             <!--可以考虑这里没有LastChildFill时,或者为True时是什么情况->
    <Menu DockPanel.Dock="Top">
        <MenuItem Header="_File">
            <MenuItem Header="_Open" Click="MenuItem_Click"/>
            <MenuItem Header="_Exit" Click="MenuItem_Click_1" />
        </MenuItem>
        <MenuItem Header="_Edit">
            <MenuItem Header="_Cut"/>
            <MenuItem Header="_Copy"/>
        </MenuItem>
    </Menu>
</DockPanel>

运行结果:
在这里插入图片描述

2 ToolBar

工具栏,位于菜单下方,具有宿主类型(ToolBarTray)和项类型(ToolBar)。ToolBarTray可视为ToolBar的容器,用于调整工具栏的大小及位置。

代码示例:

<DockPanel LastChildFill="False">
    <ToolBarTray DockPanel.Dock="Top">
        <ToolBar>
            <Button Content="Open"/>
            <Button Content="Cut"/>
            <Button Content="Copy"/>
            <Button Content="Pase"/>
            <Button Content="Exit"/>
        </ToolBar>
        <ToolBar Header="Search">
            <TextBox Width="120"/>
            <Button Content="Go" Width="25"/>
        </ToolBar>
    </ToolBarTray>
</DockPanel>

运行结果:
在这里插入图片描述

从此例可以看出:工具栏可用做控件容器。

3 StatusBar

状态栏控件,通常位于窗体底部,用于显示状态文本信息。StatusBar也是容器控件。要呈现信息的控件是它的子元素。

代码示例:

<StatusBar DockPanel.Dock="Bottom">
    <TextBox Text="This is a StatusBar"/>
</StatusBar>

运行结果:
在这里插入图片描述

同时应该设置窗体的属性,让状态栏的右下角呈现调整区域。属性为:ResizeMode="CanResizeWithGrip"

补充:
Window的ResizeMode(大小调整模式)属性:NoResize、CanMinimize、CanResize(默认值)和CanResizeWithGrip。

其中:
NoResize:不可调节,同时没有最大最小按钮;
CanMinimize:不可调节。但可以最小化;(此时最大化按钮不可用)
CanResize:可调节(默认);
CanResizeWithGrip:可根据网格调节;(窗口右下脚显示可调节网格)
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

窗口控件(容器控件)

容纳子控件,并为子控件提供可视化分组。
布局控件都可视做容器控件。

1 Expander

Expander是可以展开和折叠的控件,由标题头和内容两部份组成。其中,Header属性设置标题头;Conent属性设置内容。

代码示例:

<Expander Header="Expander example">
    <Border Margin="10" Padding="9">
        <StackPanel>
            <TextBox>I am first textbox</TextBox>
            <TextBox>I am second textbox</TextBox>
        </StackPanel>
    </Border>
</Expander>

运行结果:
在这里插入图片描述

其中,解释一下<Border Margin="10" Padding="9">代码的含义:Margin是指Border与其父控件之间的距离;Padding是指Border与其子控件之间的距离。

注意:Expander:在代码运行后需要人为的点击标题头,其中的内容才会展开;如果想要在代码运行后,即为展开状态,则要设置属性IsExpanded=“True”。这样就不需要人为的点击,就会自动展开。

2 TabControl

TabControl支持传统的标签风格,设计用户界面时,常会用选项卡设置、标签式浏览器等。

代码示例:

<TabControl Margin="10">
    <TabItem Header="Tab1">
        <StackPanel>
            <TextBlock Text="hello"/>
        </StackPanel>
    </TabItem>
    <TabItem Header="Tab2">
        <StackPanel>
            <TextBlock Text="hello world!"/>
        </StackPanel>
    </TabItem>
</TabControl>

运行结果:
在这里插入图片描述

3 GroupBox

GroupBox是对控件进行分组的可视化容器控件,并将同类控件归类,置于GroupBox控件中。

代码示例:

<GroupBox Header="hello" Margin="10" Padding="9">
    <StackPanel>
      <TextBlock Text="hello world!"/>
        <TextBlock Text="hello world!"/>
    </StackPanel>
</GroupBox>

运行结果:
在这里插入图片描述

范围控件

WPF具有3个范围控件:Slider、ScrollBar和ProgressBar。这些控件这些控件在规定的范围内取值,继承自RangeBase。

RangeBase类的公共属性有:
Maximun:上限的最大值。
Minimum:下限的最小值。
LargeChangeValue:属性值的最大变化。
SmallChangeValue:属性值的最小变化。
Value:控件当前值。

其中,当Value值改变了,Slider、ScrollBar事件响应,但是ProgessBar控件在Value变化时,不响应,它能响应Click、Dragdrop、Dragover、Mousemove、Mouseup、Mousedown这六个事件。

其中:
DragDrop:拖放完成,也就是鼠标拖入对象并在拖放区域释放。
DragEnter:拖放进入,也就是鼠标拖放对象进入拖放区域。
DragLeave:离开拖放区域。
DragOver:拖放对象悬浮于拖放区域,在拖放区域内移动时多次触发。

1 Slider

Slider控件允许用户在可视化的最小值和最大值范围之间取值。

其中,Slider的属性:
IsSnapToTickEnabled:指示 Slider 是否自动将 Thumb 移动到最近的刻度线。
TickPlacement:标记位置?
TickFrequency:标记间隔大小。
IsSelectionRangeEnabled:是否加范围选择。
SelectionStart:选择范围初始值。
SelectionEnd:选择范围终止值。

代码示例:

<Slider Minimum="0" Maximum="100"  Value="50"   IsSnapToTickEnabled="False"  TickPlacement="BottomRight" TickFrequency="5" IsSelectionRangeEnabled="True"  SelectionStart="50"  SelectionEnd="100"/>

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值