[英]Caliburn.Micro not updating UI
我正在尝试使用caliburn micro和wpf构建简单的实用程序。 这个简单的代码:
public bool CanTransfer
{
get { return this.canTransfer; }
set
{
this.NotifyOfPropertyChange(() => this.CanTransfer);
this.canTransfer = value;
}
}
public void Transfer()
{
Task.Factory.StartNew(this.Process);
}
private void Process()
{
this.CanTransfer = false;
Thread.Sleep(5000);
this.CanTransfer = true;
}
以下- Transfer
按钮是否保持禁用状态,但是我希望它在5秒钟后启用,我在做什么错呢?
在CanTransfer
setter方法中交换这些行-现在,您首先说一些更改,而实际上没有更改,然后更改它:
public bool CanTransfer
{
get { return this.canTransfer; }
set
{
this.canTransfer = value;
this.NotifyOfPropertyChange(() => this.CanTransfer);
}
}
我通常使用像ChangeAndNotify<T>
这样的方法(唯一的麻烦是字段的声明),代码可以在这里看到:
private bool _canTransfer;
public string CanTransfer
{
get { return _canTransfer; }
set
{
PropertyChanged.ChangeAndNotify(ref _canTransfer, value, () => CanTransfer);
}
}
您缺少通知:
this.NotifyOfPropertyChange(() => this.CanTransfer);
我希望语法正确,我是从内存中键入的。 这基本上告诉WPF:“嘿,有些变化,去看看新值”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.