首页 > 解决方案 > C# WPF MVVM | 更改绑定到状态栏变量

问题描述

所以,我有一个状态栏作为用户控件。

模型:

public class StatusBarModel : BindableBase
{
    private string _status;
    public string Status
    {
        get { return _status; }
        set
        {
            _status = value;
            RaisePropertyChanged("Status");
        }
    }

    private int _p_value;
    public int P_Value
    {
        get { return _p_value; }
        set
        {
            _p_value = value;
            RaisePropertyChanged("P_Value");
        }
    }

}

视图模型:

 public class StatusBarVM : BindableBase
{
    readonly source.elements.StatusBar.StatusBarModel _model = new source.elements.StatusBar.StatusBarModel();
    public StatusBarVM()
    {
        _model.PropertyChanged += (s, e) => { RaisePropertyChanged(e.PropertyName); };

    }

    public string Status
    {
        get { return _model.Status; }
        set { _model.Status = value; }
    }

    public int P_Value
    {
        get { return _model.P_Value; }
        set { _model.P_Value = value; }
    }

}

例如,我想从其他 ViewModel 中更改Status变量。我该怎么做?我见过只有按钮等的例子。

标签: c#wpfmvvmstatusbar

解决方案


您可以创建一个静态类来保存该值。

public static class Globals()
{
    public static StatusBarModel GlobalStatus { get; set; }
}

然后,每当您想更改它时,您就可以

Globals.GlobalStatus.Status = "something";
Globals.GlobalStatus.P_Value = 14;

这能满足你的需要吗?


推荐阅读