c# - 我如何绑定(bind)使用另一个静态属性的属性

标签 c# mvvm binding inotifypropertychanged

我在我的 progeсt (C#) 中使用了 mvvm 模式,但我遇到了一些问题。 我的 View 上有一个标签,标签的文本绑定(bind)到我的 viewModel 中的属性:

val label=new Label();
label.SetBinding<StatusViewModel>(Label.TextProperty, x=>x.TextProp);

这是我的 View 模型,它实现了 INotifyPropertyChanged 接口(interface):

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 属性会通知标签有关它的更改。

附言抱歉可能出现的错误,我从脑海中输入了这段代码。

最佳答案

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

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

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

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

关于c# - 我如何绑定(bind)使用另一个静态属性的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28331568/

相关文章:

c# - 使用正则表达式查找两个字符串的完全相等性

c# - Windows 服务应用程序 Controller

wpf - 在椭圆填充中实现ColorAnimation的问题

c# - 绑定(bind)到数据表中的数字字段时如何允许空值?

c# - 如何使用 Javascript 更改 Gridview 中隐藏字段的值?

c# - .NET 中的 FTPListener

c# - MVVM ListBox - 根据其索引更改项目的背景

android - Android MVVM按功能打包和按层打包哪个更好?

events - 解除事件与 Dojo 的绑定(bind)

xaml - 绑定(bind)到 ElementName 取决于绑定(bind)顺序