在 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 示例:
二、布局与元素类
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双向)。
示例:
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")。
示例:
ControlTemplate
命名空间:
System.Windows.Controls作用:自定义控件的结构(如将按钮改为圆形),比
Style更灵活。示例:
六、事件与命令类
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 应用。
浙公网安备 33010602011771号