我有一個「關閉」按鈕,然後在我的MVVM視圖鏈接,像這樣一個Expander:ReactiveUI:R/W性能與輸出屬性
this.BindCommand(ViewModel, vm => vm.CloseResults, v => v.CloseButton);
this.OneWayBind(ViewModel, vm => vm.HasExecuted, v => v.Panel.IsExpanded);
如果在用戶點擊按鈕,擴展應該是崩潰了。在視圖模型中,我有一個ReactiveCommand應該照顧這:
public ReactiveCommand<object> CloseResults { get; protected set; } =
ReactiveCommand.Create();
在視圖模型,HasExecuted
是應該擴大/根據其價值崩潰的擴展輸出特性:
private readonly ObservableAsPropertyHelper<bool> _hasExecuted;
public bool HasExecuted => _hasExecuted.Value;
因此,爲了與該按鈕掛鉤的命令,我結合HasExecuted
的命令,像這樣:
CloseResults.Select(_ => false).ToProperty(this, vm => vm.HasExecuted, out _hasExecuted);
這似乎並沒有做nything。但是,如果我使用讀寫屬性,並將其掛接如下:
CloseResults.Subscribe(_ => { HasExecuted = false; });
它可以很好地工作。任何人都可以解釋爲什麼輸出屬性在這種情況下不起作用?是不是ToProperty
擴展應該訂閱Select(_ => false)
返回的IOberservable<bool>
?
我仍然處在所有這一切的中間,所以可能有一些明顯的我失蹤了。
對我來說,似乎HasExecuted observable將永遠是錯誤的。你也不能設置它,因爲它是隻讀的。 – kenny
那麼'HasExecuted'事先設置爲true,這就是面板擴展的原因。而只讀成員是'ObservableAsPropertyHelper',而不是布爾本身? –
phreezie