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

相关推荐
FuckPatience13 小时前
WPF 改变根据某一列条件改变行样式
wpf
dalong101 天前
WPF:DataGrid样式
wpf
samble3 天前
从零搭建工业控制系统(二十二):线程安全与并发控制
c#·wpf·并发·mvvm·线程安全·工业控制
姜穆澜3 天前
OneID 从 0 到 1 完整生产案例(三)
大数据·wpf
dalong103 天前
WPF:MVVM 示例
大数据·wpf
samble3 天前
从零搭建工业控制系统(二十一):状态管理系统——中心状态对象设计
c#·wpf·mvvm·状态管理·工业控制
mengge.cloud4 天前
存储技术基础小白教程
linux·运维·服务器·wpf·存储
DreamLife☼4 天前
复杂Agent系统架构设计
系统架构·wpf·agent·组件·设计·构架·说明
SamChan905 天前
PDF翻译服务端到端基准测试:4款主流方案的吞吐量、延迟、内存占用对比
服务器·网络·python·ai·pdf·wpf
bugcome_com5 天前
Avalonia 控件模板实战:从 WPF 迁移自定义 Button 样式的完整指南
wpf