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

How I can bind property, which use another static property

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

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

也就是说,初始绑定非常简单。您只需要添加一个 属性 即 returns 和 static 一个:

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

PropertyChanged 事件是另一回事。当然,您可以从 StaticTextRedirect 属性 提高它,但是如果某些 other class 更改 属性 则不会触发.您可能只需要在静态 属性 的 setter 中引发自定义事件,客户端代码可以侦听并引发适当的 PropertyChanged 事件。