【发布时间】:2016-12-12 03:56:41
【问题描述】:
我正在使用带有 Winforms 的 Net40 ReactiveUI,当我有这个时它工作正常:
public class VMUpdates : ReactiveObject
{
...
public ReactiveCommand<object> btnClick { get; private set; }
public VMUpdates(frmMain frmMain)
{
...
btnClick = ReactiveCommand.Create();
btnClick.Subscribe(_ => ExecutableMethod());
}
private void ExecutableMethod()
{
...
}
}
还有这个:
public partial class FrmUpdates : Form, IViewFor<VMUpdates>
{
...
public FrmUpdates(frmMain)
{
ViewModel = new VMUpdates(FrmMain);//Initialise VM
InitializeComponent();
...
this.BindCommand(ViewModel, vm => vm.btnClick, view => view.btn);
}
public VMUpdates ViewModel { get; set; }
object IViewFor.ViewModel
{
get { return ViewModel; }
set { ViewModel = (VMUpdates)value; }
}
但只要我将 ReactiveCommand 添加到完全不同的 VM,ExecutableMethod 方法就不再执行。
public class VMStatus : ReactiveObject
{
public ReactiveCommand<object> btn2Click { get; private set; }
public VMStatus()
{
btn2Click = ReactiveCommand.Create();
btn2Click.Subscribe(_ => SomeMethod());
}
private void SomeMethod()
{
...
}
}
加
public partial class frmStatus : Form, IViewFor<VMStatus>
{
public frmStatus()
{
ViewModel = new VMStatus();//Initialise VM
InitializeComponent();
...
this.BindCommand(ViewModel, vm => vm.btn2Click, view => view.button2);
}
public VMStatus ViewModel { get; set; }
object IViewFor.ViewModel
{
get { return ViewModel; }
set { ViewModel = (VMStatus)value; }
}
}
【问题讨论】:
-
请将您的解决方案作为答案发布并接受它
标签: c# viewmodel reactiveui reactivex