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 操作无需使用。

相关推荐
Scout-leaf17 小时前
WPF新手村教程(三)—— 路由事件
c#·wpf
柒.梧.3 天前
基于SpringBoot+JWT 实现Token登录认证与登录人信息查询
wpf
十月南城6 天前
Flink实时计算心智模型——流、窗口、水位线、状态与Checkpoint的协作
大数据·flink·wpf
听麟9 天前
HarmonyOS 6.0+ 跨端会议助手APP开发实战:多设备接续与智能纪要全流程落地
分布式·深度学习·华为·区块链·wpf·harmonyos
@hdd9 天前
Kubernetes 可观测性:Prometheus 监控、日志采集与告警
云原生·kubernetes·wpf·prometheus
zls3653659 天前
C# WPF canvas中绘制缺陷分布map
开发语言·c#·wpf
专注VB编程开发20年9 天前
c#Redis扣款锁的设计,多用户,多台电脑操作
wpf
闲人编程10 天前
定时任务与周期性调度
分布式·python·wpf·调度·cron·定时人物·周期性
zls36536510 天前
C# WPF canvas中绘制缺陷分布map并实现缩放
开发语言·c#·wpf
数据知道11 天前
PostgreSQL:Citus 分布式拓展,水平分片,支持海量数据与高并发
分布式·postgresql·wpf