gpt4 book ai didi

c# - Prism MVVM ObservsCanExecute-如何嵌套(逻辑及以上)简单的可观察属性

转载 作者:行者123 更新时间:2023-12-03 10:25:19 27 4
gpt4 key购买 nike

我对Prism还是很陌生,并且在弄清楚如何利用ObservesCanExecute(使我不必手动要求命令重新计算)与多个属性配合使用时遇到麻烦。具有单个属性,这就像一个魅力!但是我想对我的所有三个属性执行“与”运算。

这是代码:

public ViewModel()
{
MyCommand = new DelegateCommand(MyCommandHandler).ObservesCanExecute(() => BoolOne).ObservesCanExecute(() => BoolTwo).ObservesCanExecute(() => BoolThree);
}
private bool _boolOne;
public bool BoolOne
{
get => _boolOne;
set => SetProperty(ref _boolOne, value);
}
...

我遇到的问题是,一旦 BoolThree设置为true,就启用了按钮(附加到此命令),而无需检查 BoolOneBoolTwo。我怎样才能使它也像命令谓词一样是 return BoolOne && BoolTwo && BoolThree

最佳答案

您将要在这里使用ObservesProperty而不是ObservesCanExecute。 https://prismlibrary.com/docs/commanding.html

Do not attempt to chain-register ObservesCanExecute methods. Only one property can be observed for the CanExcute delegate.

You can chain-register multiple properties for observation when using the ObservesProperty method. Example: ObservesProperty(() => IsEnabled).ObservesProperty(() => CanSave).


因此,您需要将代码更改为此:
MyCommand = new DelegateCommand(MyCommandHandler, MyCanExecuteMethod).ObservesProperty(() => BoolOne).ObservesProperty(() => BoolTwo).ObservesProperty(() => BoolThree);

private void MyCanExecuteMethod()
{
return BoolOne && BoolTwo && BoolThree;
}
这样,当其中任何一个属性更改时,都会触发RaiseCanExecuteChanged。

关于c# - Prism MVVM ObservsCanExecute-如何嵌套(逻辑及以上)简单的可观察属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59804488/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com