我在我的progeсt(C#)中使用mvvm模式,我遇到了一些问题。 我的视图上有一个标签,标签的文本从我的viewModel绑定到属性:
val label=new Label();
label.SetBinding<StatusViewModel>(Label.TextProperty, x=>x.TextProp);
这是我的视图模型,它实现了INotifyPropertyChanged接口:
class StatusViewModel
{
private string _textProp;
public string TextProp
{
get
{
return _textProp;
}
set
{
if(_textProp == value)
return _textProp;
_textProp=value;
OnPropertyChange();
}
}
}
但我有另一个静态属性:
static class StaticClass
{
public static string StaticText {get; set; }
}
我想在StatusViewModel的TextProp属性中使用这个静态属性StaticText。和StaticText属性相关,告知标签有关它的变化。
P.S。对于可能出现的错误感到抱歉,我从头脑中输入了这段代码。
答案 0 :(得分:1)
如果您绑定到static
属性,那么您可能做错了:)
那就是说,初始绑定非常简单。您只需添加一个返回static
的属性:
public string StaticTextRedirect
{
get { return StaticClass.StaticText; }
set { StaticClass.StaticText = value; }
}
PropertyChanged
事件是另一个野兽。您当然可以从StaticTextRedirect
属性中提升它,但如果某些其他类更改了该属性,则不会触发。您可能需要在静态属性的setter中引发一个自定义事件,客户端代码可以监听并为其引发相应的PropertyChanged
事件。