Рассмотрите возможность использования наследования с ReactiveUI. У меня есть базовый класс ViewModel с DoSomethingCommand. CanExecute для этой команды зависит от свойства Prop1.
public class A : ReactiveObject
{
public int Prop1 { get {...} set {...} }
public ReactiveCommand DoSomethingCommand { get; private set; }
public A()
{
IObservable<bool> canDoSomething = this.WhenAny(vm => vm.Prop1, p1 => CanDoSomething());
DoSomethingCommand = new ReactiveCommand(canDoSomething);
DoSomethingCommand.Subscribe(x => DoSomething());
}
protected virtual bool CanDoSomething()
{
return ...
}
}
В унаследованном классе CanExecute для этой команды дополнительно зависит от свойства Prop2.
public class B : A
{
public int Prop2 { get {...} set {...} }
public B()
{
//Senseless code. For explanation only
IObservable<bool> canDeleteExecute = this.WhenAny(vm => vm.Prop1, vm => vm.Prop2, (p1, p2) => CanDoSomething());
}
}
Как лучше всего создать команду и сделать «CanExecute» зависимым от свойств из базовых и унаследованных классов? Конечно, я хочу, чтобы унаследованные классы не менялись, когда «CanExecute» в базовом классе становится дополнительно зависящим от свойства AnotherProp.