You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过WPF绑定实现点击Pause按钮后自动切换为Resume文本?

第一步:修正ViewModel代码

你使用的MvvmLight库已经封装了属性变更通知逻辑,只需让你的ViewModel继承ViewModelBase基类,调整属性定义和赋值逻辑即可:

// 首先ViewModel需要继承MvvmLight提供的ViewModelBase基类
public class YourViewModel : ViewModelBase
{
    private bool _pause;
    public bool Pause
    {
        get => _pause;
        set
        {
            if (_pause != value)
            {
                _pause = value;
                RaisePropertyChanged(); // 触发属性变更通知
            }
        }
    }

    private string _btn_pause_text;
    public string Btn_Pause_Text
    {
        get => _btn_pause_text;
        set
        {
            if (_btn_pause_text != value)
            {
                _btn_pause_text = value;
                RaisePropertyChanged(); // 触发通知,告知UI更新对应绑定值
            }
        }
    }

    // 构造函数中给按钮文本赋初始值
    public YourViewModel()
    {
        Btn_Pause_Text = "Pause";
    }

    public ICommand onPauseCommand => new RelayCommand(onPause);
    private void onPause()
    {
        if (!_pause)
        {
            Pause = true; 
            // 直接给属性赋值,不要修改私有字段,走属性set方法触发通知
            Btn_Pause_Text = "Resume";
        }
        else
        {
            Pause = false;
            Btn_Pause_Text = "Pause";
        }
    }
}

第二步:修正XAML绑定

删除错误的Name属性绑定,将按钮的Content属性绑定到ViewModel的文本属性即可:

<Button 
    Grid.Row="7" 
    Grid.Column="0" 
    Content="{Binding Btn_Pause_Text}" 
    Height="37" 
    Width="88" 
    Command="{Binding onPauseCommand}" />

逻辑说明

WPF绑定依赖INotifyPropertyChanged接口实现数据和UI的同步,你之前的代码存在两个问题:

  1. 属性没有触发变更通知,UI无法感知数据源已经修改
  2. 按钮Content属性写死为固定值,没有绑定到动态文本属性,Name属性本身也不支持绑定命令,无需额外配置

内容的提问来源于stack exchange,提问作者user3884423

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 09:09:02