如何告诉ReactiveUI更新绑定?
通常情况下,我会这样做:
Submit.RaiseCanExecuteChanged();
但是,不支持以下内容:
public partial class FormViewModel : ReactiveObject
{
public FormViewModel()
{
Submit = ReactiveCommand.Create(this.WhenAnyValue(x => x.CanSubmit));
Submit.Subscribe(x => OnSubmit());
}
bool _canExecute;
public bool CanSubmit
{
get { return !GetUnsatisfied().Any(); }
set { this.RaiseAndSetIfChanged(ref _canExecute, value); } // Need to update view based on command.CanExecute state change
}
void OnSubmit()
{
var rosterInfo = new RosterInfo(new Course(CourseInput.Name),
new Instructor(InstructorNameInput, InstructorIdInput));
var repository = GetRepository();
repository.AddCourseInfo(rosterInfo);
Publish(REQUEST_NAVIGATION_TO_SUBMITION_CONFIRMATION, rosterInfo);
}
ObservableCollection<RequiredField> GetUnsatisfied()
{
RequiredFields.Clear();
RequiredFields = Review();
return RequiredFields;
}
}
因此,如何根据我的命令所依赖的CanExecute谓词强制绑定更新?
更新
=IF(B2=B3,A2&","&C3,A2)
答案 0 :(得分:2)
多个问题:
阅读array(3) {
["key1"]=>
string(19) "key1 from prioritar"
["key2"]=>
string(24) "key2 from LESS prioritar"
["my_problem"]=>
string(18) "I REACHED MY GOAL!"
}
上的fundamentals,特别是如何写“读写属性”。
在你的情况下,只要属性ReactiveObject
发生变化,this.WhenAnyValue(x => x.CanSubmit)
就会触发命令的刷新,但是这个从来没有,因为你从不调用setter(并且getter的impl不正确)。
目前,您的方法CanSubmit
具有“轮询”语义,这意味着您需要触发此方法来更新命令。这根本不是反应性的,你应该绑定/收听更新。
如果您无法使GetUnsatisfied()
逻辑被动,那么您可以执行以下操作:
Review()
基本上有一个计时器来做你的polilng。 (但我强烈建议进一步采取反应方式)