我如何绑定属性,使用另一个静态属性

时间:2015-02-04 21:13:08

标签: c# mvvm binding inotifypropertychanged

我在我的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。对于可能出现的错误感到抱歉,我从头脑中输入了这段代码。

1 个答案:

答案 0 :(得分:1)

如果您绑定到static属性,那么您可能做错了:)

那就是说,初始绑定非常简单。您只需添加一个返回static的属性:

public string StaticTextRedirect
{
   get { return StaticClass.StaticText; }
   set { StaticClass.StaticText = value; }
}

PropertyChanged事件是另一个野兽。您当然可以从StaticTextRedirect属性中提升它,但如果某些其他类更改了该属性,则不会触发。您可能需要在静态属性的setter中引发一个自定义事件,客户端代码可以监听并为其引发相应的PropertyChanged事件。