我正在尝试在WPF中学习ReactiveUI,并且我对如何使用Reactive UI绑定(不是默认的Xaml绑定)来绑定命令感到困惑。 我在ReactiveUI文档中读到,正确的方法是使用以下指令:
this.BindCommand(this.ViewModel, vm => vm.MyCommand, v => v.myControl);
现在,如果我在MainWindowView.xaml(查看)中了:
<Button x:Name="TestButton" Command="{Binding Click}" />
在MainWindowView的代码后面:
public partial class MainWindowView : Window
{
public MainWindowView()
{
InitializeComponent();
DataContext = new MainWindowViewModel();
}
}
并在MainWindowViewModel(ViewModel)中:
class MainWindowViewModel : ReactiveObject
{
public ReactiveCommand<Unit, Unit> ClickCommand { get; }
public MainWindowViewModel()
{
ClickCommand = ReactiveCommand.Create(ClickMethod);
}
void ClickMethod()
{
// Code for executing the command here.
}
}
我不知道在哪里插入以及如何编写第一条指令:
this.BindCommand(this.ViewModel, vm => vm.MyCommand, v => v.myControl);
针对我的具体情况。
非常感谢您的回答。
答案 0 :(得分:1)
Rodney Littles在上面的评论中引用的WPF示例非常好。对于您的情况,应该是这样的:
public partial class MainWindowView : ReactiveWindow<MainWindowViewModel>
{
public MainWindowView()
{
InitializeComponent();
ViewModel = new MainWindowViewModel();
this
.WhenActivated(disposables => {
this
.BindCommand(this.ViewModel, vm => vm.ClickCommand, v => v.TestButton)
.DisposeWith(disposables);
});
}
}
确保您从ReactiveWindow<MainWindowViewModel>
而不是Window
派生。此外,请使用名为DataContext
的继承属性代替ViewModel
。