我在我的 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/