WPF 操作之Dispatcher--- 只在多线程更新 UI 时使用。

在 WPF 中,为 Button 触发动作有三种常见写法:

  1. Click 事件处理

    在 XAML 中指定 Click="Button_Click",在后台代码中实现对应方法:

    复制代码
    private void Button_Click(object sender, RoutedEventArgs e)
    {
        MessageBox.Show("操作成功");
    }
  2. Command 绑定(推荐用于 MVVM)

    在 ViewModel 中定义 ICommand,XAML 中绑定:

    复制代码
    <Button Content="点击" Command="{Binding MyCommand}" />
    
    public ICommand MyCommand => new RelayCommand(() => MessageBox.Show("操作成功"));
  3. 动态订阅事件 + Dispatcher(用于特殊场景)

    在代码中动态添加 Click 事件,并用 Dispatcher 确保 UI 更新在线程安全环境下执行(通常仅在非 UI 线程修改界面时需要):

    复制代码
    Button1.Click += (sender, e) => MessageBox.Show("操作成功");
    
    // 若从后台线程更新 UI 才需 Dispatcher
    Button1.Dispatcher.Invoke(() => Button1.Content = "nihao lihuanying");

注意:Dispatcher 不是触发动作的方式,而是线程调度工具;日常 UI 操作无需使用。

相关推荐
SamChan9018 小时前
PDF翻译时页眉页脚总在捣乱?跨页重复文本块的检测与过滤实测
人工智能·python·ai·pdf·wpf
samble8 天前
从零搭建灌装监控系统(四):深色主题与样式系统,ResourceDictionary 统一管理
c#·wpf·mvvm·样式·工业控制
_Jonas8 天前
.net framework开发环境正式环境配置文件的切换
.net·wpf
dalong1010 天前
WPF:Modbus 状态监控
wpf·modbus
He BianGu10 天前
【WPF-VisionMaster】机器视觉通用平台V5.0版本发行说明
opencv·c#·wpf·halcon·机器视觉·visionmaster
fogota14 天前
Emoji与Segoe MDL2 Assets的比较
c#·wpf
fogota14 天前
C# WPF 按钮加载字体图标 / 动物头像
c#·.net·wpf
fogota14 天前
C# WPF 按钮加载系统图标 / 动物头像
c#·.net·wpf
军训猫猫头14 天前
C# 封装 MySQL 自动写入与查询工具类(基于 MySqlConnector)
mysql·c#·.net·wpf
gis开发之家15 天前
Spring Boot 4 定时任务与异步线程池:从 @Scheduled 到高并发任务编排(生产级实战)
java·spring boot·后端·wpf·spring boot4