当前位置: 首页 > news >正文

C#WPF关键类

在 C# WPF 开发中,有一些核心类是构建应用程序的基础,理解这些类的作用和关系对掌握 WPF 至关重要。以下是 WPF 中的关键类及其核心功能:

一、应用程序基础类

  1. Application

    • 命名空间System.Windows

    • 作用:WPF 应用程序的入口和全局管理器,负责应用的生命周期(启动、退出)、全局资源、窗口管理等。

    • 核心属性 / 方法:

      • StartupUri:指定应用启动时加载的第一个窗口(如MainWindow.xaml)。

      • Resources:存储全局资源(如样式、模板),可在整个应用中复用。

      • Shutdown():关闭应用程序。

    • 示例:

      // 应用启动时执行
      public partial class App : Application {protected override void OnStartup(StartupEventArgs e) {base.OnStartupOnStartup(e);// 自定义启动逻辑}
      }
  2. Window

    • 命名空间System.Windows

    • 作用:WPF 中的窗口类,所有独立窗口都继承自此类(如MainWindow)。

    • 核心属性 / 方法:

      • Title:窗口标题;Width/Height:窗口尺寸;Icon:窗口图标。

      • Show():显示窗口;Close():关闭窗口。

      • DataContext:设置窗口的数据上下文(用于数据绑定)。

    • XAML 示例:

      <Window x:Class="WpfApp.MainWindow"Title="我的窗口" Width="800" Height="600"><!-- 窗口内容 -->
      </Window>

二、布局与元素类

  1. FrameworkElement

    • 命名空间System.Windows

    • 作用:所有 WPF 可视元素的基类(如控件、布局容器),定义了尺寸、位置、样式等核心属性。

    • 核心属性:

      • Width/Height:元素尺寸;MinWidth/MaxWidth:最小 / 最大尺寸。

      • Margin:外间距;Padding:内间距。

      • HorizontalAlignment/VerticalAlignment:对齐方式。

      • Style:元素应用的样式;DataContext:数据绑定上下文。

  2. Panel

    • 命名空间System.Windows.Controls

    • 作用:布局容器的基类,所有布局控件(如GridStackPanel)都继承自此类,负责子元素的排列。

    • 常用子类:

      • Grid:网格布局,按行和列组织元素。

      • StackPanel:栈式布局,水平 / 垂直排列元素。

      • Canvas:画布布局,通过坐标定位元素。

      • DockPanel:停靠布局,元素可停靠在上下左右或填充剩余空间。

三、控件类

  1. Control

    • 命名空间System.Windows.Controls

    • 作用:所有交互式控件的基类,提供样式、模板、字体等视觉属性。

    • 核心属性:

      • Foreground:前景色(如文本颜色);Background:背景色。

      • FontFamily/FontSize:字体样式和大小。

      • Template:控件模板(自定义控件外观的核心)。

  2. 常用控件子类

    • Button:按钮控件,响应Click事件,支持Command绑定。

    • TextBox:文本输入控件,通过Text属性获取 / 设置内容。

    • Label:静态文本显示控件,Content属性设置文本。

    • ListBox/ComboBox:列表类控件,ItemsSource绑定数据源,SelectedItem获取选中项。

    • CheckBox/RadioButton:选择类控件,IsChecked属性表示选中状态。

四、数据绑定核心类

  1. Binding

    • 命名空间System.Windows.Data

    • 作用:定义数据绑定规则,关联源(如 C# 对象属性)和目标(如控件属性)。

    • 核心属性:

      • Path:绑定源的属性路径(如UserName)。

      • Source:绑定的数据源(可省略,默认使用DataContext)。

      • Mode:绑定模式(如OneWay单向、TwoWay双向)。

    • 示例:

      <!-- 双向绑定TextBox和User对象的Name属性 -->
      <TextBox Text="{Binding Path=Name, Mode=TwoWay}"/>
  2. DataContext

    • 类型object(所有FrameworkElement都包含此属性)

    • 作用:指定数据绑定的默认源,避免为每个绑定显式设置Source

    • 示例:

      // 在窗口中设置DataContext
      public MainWindow() {InitializeComponent();this.DataContext = new User { Name = "张三" }; // User是自定义类
      }
  3. 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));}
      }

五、样式与模板类

  1. 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>
  2. ControlTemplate

    • 命名空间System.Windows.Controls

    • 作用:自定义控件的结构(如将按钮改为圆形),比Style更灵活。

    • 示例:

      <ControlTemplate TargetType="Button"><Ellipse Fill="{TemplateBinding Background}" Width="100" Height="100"/>
      </ControlTemplate>

六、事件与命令类

  1. RoutedEvent

    • 命名空间System.Windows

    • 作用:WPF 的路由事件,可在元素树中向上(冒泡)或向下(隧道)传播,如Button.Click

  2. ICommand

    • 命名空间System.Windows.Input

    • 作用:命令接口,实现控件与逻辑的解耦(MVVM 模式核心),包含Execute(执行命令)和CanExecute(是否可执行)方法。

    • 常用实现类RelayCommand(自定义,需手动实现)。

七、图形与动画类

  1. Shape

    • 命名空间System.Windows.Shapes

    • 作用:2D 图形基类,子类包括Rectangle(矩形)、Ellipse(椭圆)、Line(直线)等。

  2. Storyboard

    • 命名空间System.Windows.Media.Animation

    • 作用:动画容器,管理动画的播放、暂停、停止,可驱动控件属性变化(如宽度、透明度)。

这些类构成了 WPF 的核心骨架,理解它们的继承关系(如ControlFrameworkElementUIElement)和协作方式,能帮助你更高效地开发 WPF 应用。

http://www.dtcms.com/a/502901.html

相关文章:

  • 从文件加密到数据料理台:两款主流加密工具(EncFSMP/CyberChef)技术特性解析与开发实战选型
  • 什么是uv和传统的区别
  • FastAPI之 处理HTTP请求
  • 【2025-系统规划与管理师】第十章:云原生系统规划
  • 求一个矩阵中的鞍点
  • 《计算机视觉度量:从特征描述到深度学习》-- 大模型应用开发基础RAG方案介绍
  • 【C++】list的使用及底层逻辑实现
  • 网站开发的整体职业规划购物网站多少钱
  • 【JVM】线上JVM堆内存报警,占用超90%
  • 【JVM系列】-第1章-JVM与Java体系结构
  • 鸿蒙NEXT Wear Engine穿戴侧应用开发完全指南
  • OpenHarmony 与 HarmonyOS 的 NAPI 开发实战对比:自上而下与自下而上的差异解析
  • openHarmony之DSoftBus分布式软总线智能链路切换算法
  • TensorFlow2 Python深度学习 - 循环神经网络(GRU)示例
  • TVM | Relay
  • 使用 Conda 安装 QGIS 也是很好的安装方式
  • 网站套餐到期什么意思抖音seo优化系统招商
  • 怎么看网站pr值衡水市住房和城乡建设局网站
  • 散点拟合圆:Matlab两种方法实现散点拟合圆
  • Kubernetes流量管理:从Ingress到GatewayAPI演进
  • 专做品牌网站西安做网站电话
  • “函数恒大于0”说明函数是可取各不同数值的变数(变量)——“函数是一种对应法则等”是非常明显的错误
  • Linux系统--信号(4--信号捕捉、信号递达)--重点--重点!!!
  • Blender后期合成特效资产预设插件 MP_Comp V2.0.2
  • 达梦8数据库常见故障分析与解决方案
  • 迁移服务器
  • 解决docker构建centos7时yum命令报错、镜像源失效问题
  • 密钥轮换:HashiCorp Vault自动续期,密钥生命周期?
  • 即时通讯系统核心模块实现
  • 【HarmonyOS】组件嵌套优化