C#WPF关键类
在 C# WPF 开发中,有一些核心类是构建应用程序的基础,理解这些类的作用和关系对掌握 WPF 至关重要。以下是 WPF 中的关键类及其核心功能:
一、应用程序基础类
-
Application
-
命名空间:
System.Windows
-
作用:WPF 应用程序的入口和全局管理器,负责应用的生命周期(启动、退出)、全局资源、窗口管理等。
-
核心属性 / 方法:
-
StartupUri
:指定应用启动时加载的第一个窗口(如MainWindow.xaml
)。 -
Resources
:存储全局资源(如样式、模板),可在整个应用中复用。 -
Shutdown()
:关闭应用程序。
-
-
示例:
// 应用启动时执行 public partial class App : Application {protected override void OnStartup(StartupEventArgs e) {base.OnStartupOnStartup(e);// 自定义启动逻辑} }
-
-
Window
-
命名空间:
System.Windows
-
作用:WPF 中的窗口类,所有独立窗口都继承自此类(如
MainWindow
)。 -
核心属性 / 方法:
-
Title
:窗口标题;Width/Height
:窗口尺寸;Icon
:窗口图标。 -
Show()
:显示窗口;Close()
:关闭窗口。 -
DataContext
:设置窗口的数据上下文(用于数据绑定)。
-
-
XAML 示例:
<Window x:Class="WpfApp.MainWindow"Title="我的窗口" Width="800" Height="600"><!-- 窗口内容 --> </Window>
-
二、布局与元素类
-
FrameworkElement
-
命名空间:
System.Windows
-
作用:所有 WPF 可视元素的基类(如控件、布局容器),定义了尺寸、位置、样式等核心属性。
-
核心属性:
-
Width/Height
:元素尺寸;MinWidth/MaxWidth
:最小 / 最大尺寸。 -
Margin
:外间距;Padding
:内间距。 -
HorizontalAlignment/VerticalAlignment
:对齐方式。 -
Style
:元素应用的样式;DataContext
:数据绑定上下文。
-
-
-
Panel
-
命名空间:
System.Windows.Controls
-
作用:布局容器的基类,所有布局控件(如
Grid
、StackPanel
)都继承自此类,负责子元素的排列。 -
常用子类:
-
Grid
:网格布局,按行和列组织元素。 -
StackPanel
:栈式布局,水平 / 垂直排列元素。 -
Canvas
:画布布局,通过坐标定位元素。 -
DockPanel
:停靠布局,元素可停靠在上下左右或填充剩余空间。
-
-
三、控件类
-
Control
-
命名空间:
System.Windows.Controls
-
作用:所有交互式控件的基类,提供样式、模板、字体等视觉属性。
-
核心属性:
-
Foreground
:前景色(如文本颜色);Background
:背景色。 -
FontFamily/FontSize
:字体样式和大小。 -
Template
:控件模板(自定义控件外观的核心)。
-
-
-
常用控件子类
-
Button:按钮控件,响应
Click
事件,支持Command
绑定。 -
TextBox:文本输入控件,通过
Text
属性获取 / 设置内容。 -
Label:静态文本显示控件,
Content
属性设置文本。 -
ListBox/ComboBox:列表类控件,
ItemsSource
绑定数据源,SelectedItem
获取选中项。 -
CheckBox/RadioButton:选择类控件,
IsChecked
属性表示选中状态。
-
四、数据绑定核心类
-
Binding
-
命名空间:
System.Windows.Data
-
作用:定义数据绑定规则,关联源(如 C# 对象属性)和目标(如控件属性)。
-
核心属性:
-
Path
:绑定源的属性路径(如UserName
)。 -
Source
:绑定的数据源(可省略,默认使用DataContext
)。 -
Mode
:绑定模式(如OneWay
单向、TwoWay
双向)。
-
-
示例:
<!-- 双向绑定TextBox和User对象的Name属性 --> <TextBox Text="{Binding Path=Name, Mode=TwoWay}"/>
-
-
DataContext
-
类型:
object
(所有FrameworkElement
都包含此属性) -
作用:指定数据绑定的默认源,避免为每个绑定显式设置
Source
。 -
示例:
// 在窗口中设置DataContext public MainWindow() {InitializeComponent();this.DataContext = new User { Name = "张三" }; // User是自定义类 }
-
-
INotifyPropertyChanged
-
命名空间:
System.ComponentModel
-
作用:接口,实现后可通知 UI 数据已更新(数据绑定的 “双向同步” 核心)。
-
示例:
public class User : INotifyPropertyChanged {private string _name;public string Name {get => _name;set {_name = value;OnPropertyChanged(); // 通知UI属性变化}} public event PropertyChangedEventHandler PropertyChanged;protected void OnPropertyChanged([CallerMemberName] string propertyName = null) {PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));} }
-
五、样式与模板类
-
Style
-
命名空间:
System.Windows
-
作用:定义控件的外观规则(如背景色、字体),可复用。
-
核心属性:
-
TargetType
:样式应用的目标控件类型(如Button
)。 -
Setters
:属性设置集合(如Setter Property="Background" Value="Red"
)。
-
-
示例:
<Style TargetType="Button"><Setter Property="Background" Value="LightBlue"/><Setter Property="FontSize" Value="14"/> </Style>
-
-
ControlTemplate
-
命名空间:
System.Windows.Controls
-
作用:自定义控件的结构(如将按钮改为圆形),比
Style
更灵活。 -
示例:
<ControlTemplate TargetType="Button"><Ellipse Fill="{TemplateBinding Background}" Width="100" Height="100"/> </ControlTemplate>
-
六、事件与命令类
-
RoutedEvent
-
命名空间:
System.Windows
-
作用:WPF 的路由事件,可在元素树中向上(冒泡)或向下(隧道)传播,如
Button.Click
。
-
-
ICommand
-
命名空间:
System.Windows.Input
-
作用:命令接口,实现控件与逻辑的解耦(MVVM 模式核心),包含
Execute
(执行命令)和CanExecute
(是否可执行)方法。 -
常用实现类:
RelayCommand
(自定义,需手动实现)。
-
七、图形与动画类
-
Shape
-
命名空间:
System.Windows.Shapes
-
作用:2D 图形基类,子类包括
Rectangle
(矩形)、Ellipse
(椭圆)、Line
(直线)等。
-
-
Storyboard
-
命名空间:
System.Windows.Media.Animation
-
作用:动画容器,管理动画的播放、暂停、停止,可驱动控件属性变化(如宽度、透明度)。
-
这些类构成了 WPF 的核心骨架,理解它们的继承关系(如Control
→FrameworkElement
→UIElement
)和协作方式,能帮助你更高效地开发 WPF 应用。