【发布时间】:2019-10-20 21:26:20
【问题描述】:
我正在尝试在 WPF 中学习 ReactiveUI,但我对如何使用 Reactive UI 绑定(不是默认的 Xaml 绑定)来绑定命令感到困惑。 我在 ReactiveUI 文档上读到正确的方法是使用以下指令:
this.BindCommand(this.ViewModel, vm => vm.MyCommand, v => v.myControl);
现在如果我在 MainWindowView.xaml (View):
<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);
针对我的具体情况。
非常感谢您的回答。
【问题讨论】:
-
通常将 rxui 绑定放在视图构造函数后面的代码中。所以在你的情况下MainWindowView。您可能希望使用 WhenActivated() 方法,该方法将在视图不再存在时处理您的绑定。文档中有如何做到这一点。
-
@GlennWatson 指出您在 xaml 页面的代码后面添加代码绑定。这些通常在构造函数中创建。我们有 WPF 示例 github.com/reactiveui/ReactiveUI.Samples/blob/master/wpf/… 将向您展示如何做到这一点。
标签: wpf reactiveui