使用.Net Core开发WPF App系列教程(七、 WPF中的常用控件(中))
控件分类
在第一篇文章.Net Core和WPF介绍中的WPF的功能和特性部分根据功能性介绍了WPF的控件 名称。
在接下来的文章中,将会详细的介绍各个控件的概念及使用。
主要包括:
内容控件:Label、Button、CheckBox、ToggleButton、RadioButton、ToolTip和ScrollViewer
带有标题的内容控件:TabItem、GroupBox、Expander
导航控件:Frame、TabControl、Page
窗体控件:Window
文本控件:TextBox、PasswordBox、RichTextBox
列表控件:ListBox和ComboBox
基于范围的控件:Slider和ProgressBar
日期控件:Calender和DatePicker
媒体控件:Image和MediaElement
Window类
Window类继承自ContentControl类,也是内容控件的一种。在上一篇文章中,已经介绍过内容控件。
Window类比较特殊,它跟常规的内容控件不一样。除了额外的属性之外,它还是程序最顶级的元素。可以理解为Window类是WPF程序的最大的容器。所有的控件都是放置在Window类下。
在后面的文章中,会介绍到Application类。每个运行的程序,都由System.Windows.Application类的一个实例来表示。
Application类有一个Run函数,需要传入一个Window对象(或者通过StartupUri属性指定窗体,再调用无参Run函数)。通过调用Run函数,来启动整个WPF应用程序,并打开指定窗体。
常用属性
属性 | 说明 |
Width | 指定Window宽度 |
Height | 指定Window高度 |
WindowStyle |
使用WindowStyle枚举值, 设置窗体的边框类型。SingleBorderWindow(默认值)、 None(无边框,只显示内容区域,标题栏和边框都不显示)、 ToolWindow(固定工具窗口)、 ThreeDBorderWindow(具有三维边框的窗口) |
AllowTransparency |
是否允许透明标志,默认false。 当设置为true,且背景被设置为透明色,整个窗体就会透明。 如果背景设置为透明色,AllowTransparency=false,就会显示黑色背景。 注意:AllowTransparency=true需要和WindowStyle=None配合使用,否则会报错。 这是因为边框不支持透明,只有无边框时,使用AllowTransparency=true才能生效。 |
Icon | 指定窗口图标 |
Left和Top | 使用设备无关像素设置窗口左上角到屏幕左部边缘及顶部之间的距离 |
ResizeMode |
获取或设置调整大小模式,使用ResizeMode枚举值。 CanMinimize 只能最小化和还原窗口。 同时显示“最小化”和“最大化”按钮,但只有“最小化”按钮处于启用状态。
CanResize 可以调整窗口的大小。 同时显示“最小化”和“最大化”按钮,并且两个按钮均处于启用状态。
CanResizeWithGrip 可以调整窗口的大小。 同时显示“最小化”和“最大化”按钮,并且两个按钮均处于启用状态。 窗口的右下角显示一个大小调整手柄。
NoResize 无法调整窗口的大小。 标题栏中不显示“最小化”和“最大化”按钮。 |
RestoreBounds | 获取窗体在最小化或最大化前的位置和大小 |
ShowInTaskbar | 运行后是否显示在任务栏,默认是true。 |
SizeToContent |
获取或设置一个值,该值指示窗口是否自动调整自身大小以适应其内容大小,使用SizeToContent枚举值。 Height 指定窗口将自动设置其高度以适合其内容的高度,而非宽度 Manual 指定窗口将如何自动设置其大小以适合其内容大小。 此外,窗口大小还可以由其他属性确定, 其中包括 Width、Height、MaxWidth、MaxHeight、MinWidth 和 MinHeight Width 指定窗口将自动设置其宽度以适合其内容的宽度,而非高度 WidthAndHeight 指定窗口将自动设置其宽度和高度以适合其内容的宽度和高度 |
IsActive | 获取一个值,该值指示窗口是否为活动窗口。 |
Owner | 获取或设置当前窗口的拥有者。 |
ShowActivated | 获取或设置一个值,该值指示在第一次显示窗口时,窗口是否处于激活状态。 |
TaskbarItemInfo | 获取或设置任务栏缩略图。在后面的文章中会详细介绍该功能 |
Title | 获取或设置窗口的标题。 |
TopMost |
获取或设置一个值,该值指示窗口是否出现在 Z 顺序的最顶层。 当设置该属性为true时,窗口显示在应用程序其它窗口的上面。即最顶层 |
WindowsStartupLocation |
获取或设置窗口首次显示时的位置。使用WindowsStartupLocation枚举值。 CenterOwner Window 的启动位置位于包含它的 Window 的中央,由 Owner 属性指定。 CenterScreen Window 的启动位置位于包含鼠标光标的屏幕的中央。 Manual 可从代码中设置 Window 的启动位置,或者使用默认的 Windows 位置。 |
WindowState |
获取或设置一个值,该值指示窗口是处于还原、最小化还是最大化状态。 使用WindowState枚举值 Maximized 最大化窗口 Minimized 最小化窗口 Normal 还原窗口 |
DialogResult |
获取或设置对话框结果值,此值是从 ShowDialog() 方法返回的值。 |
显示窗口
显示窗口主要是调用Window类的Show()函数和ShowDialog()函数。
在程序启动时,WPF内部调用了MainWindow的Show函数。
当我们需要显示新的窗口时,可以有以下两种做法
1、使用Visual Studio 添加一个窗口
在XAML中对窗口进行布局
1 <Window x:Class="WindowDemo.XAMLWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 6 xmlns:local="clr-namespace:WindowDemo" 7 mc:Ignorable="d" 8 Title="XAMLWindow" Height="450" Width="800"> 9 <Grid> 10 11 </Grid> 12 </Window>
显示窗体
1 XAMLWindow xAMLWindow = new XAMLWindow(); 2 xAMLWindow.ShowDialog();
或
1 XAMLWindow xAMLWindow = new XAMLWindow(); 2 xAMLWindow.Show();
2、直接使用代码创建窗口并显示
1 Window window = new Window(); 2 window.Width = 720; 3 window.Height = 500; 4 window.Background = Brushes.LightSkyBlue; 5 window.Title = "Window 1"; 6 7 Grid grid = new Grid(); 8 9 Label label = new Label(); 10 label.HorizontalAlignment = HorizontalAlignment.Center; 11 label.VerticalAlignment = VerticalAlignment.Center; 12 label.Content = "Hello World"; 13 label.FontSize = 30; 14 grid.Children.Add(label); 15 16 window.Content = grid; 17 18 window.ShowDialog();
示例代码
https://github.com/zhaotianff/DotNetCoreWPF/tree/master/七、WPF中的常用控件(二)