C# WPF MVVM |更改绑定到 StatusBar 变量
C# WPF MVVM | Change Binded to StatusBar Vars
所以,我有一个状态栏作为 UserControl。
型号:
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 变量。
我该怎么做?我见过只有按钮等的例子
您可以创建一个静态 class 来保存该值。
public static class Globals()
{
public static StatusBarModel GlobalStatus { get; set; }
}
然后,只要你想改变它,你就可以
Globals.GlobalStatus.Status = "something";
Globals.GlobalStatus.P_Value = 14;
这是否满足您的需求?
有多种方法可以满足您的要求。正如@bitclicker 所说,您可以使用 static class 来保持其价值。但我认为 使它成为静态的class 太多了,因为那个变量值可能只使用两个viewmodel
。
我建议你在两个视图模型之间进行通信。您会发现 Prism 的 event aggregator
或者您可以实现自己的事件发布-订阅模型。制作您自己的事件发布-订阅模型将帮助您迈出进入 design pattern
.
的第一步
所以,我有一个状态栏作为 UserControl。
型号:
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 变量。 我该怎么做?我见过只有按钮等的例子
您可以创建一个静态 class 来保存该值。
public static class Globals()
{
public static StatusBarModel GlobalStatus { get; set; }
}
然后,只要你想改变它,你就可以
Globals.GlobalStatus.Status = "something";
Globals.GlobalStatus.P_Value = 14;
这是否满足您的需求?
有多种方法可以满足您的要求。正如@bitclicker 所说,您可以使用 static class 来保持其价值。但我认为 使它成为静态的class 太多了,因为那个变量值可能只使用两个viewmodel
。
我建议你在两个视图模型之间进行通信。您会发现 Prism 的 event aggregator
或者您可以实现自己的事件发布-订阅模型。制作您自己的事件发布-订阅模型将帮助您迈出进入 design pattern
.