使用ReactiveUI和Windows窗体绑定到ComboBox

AID*_*Dan 5 binding mvvm winforms reactiveui

我想使用ReactiveUI将我的viewmodel中的属性绑定到Windows窗体应用程序中的ComboBox.

我在WPF中找到了几个例子,但没有Windows Forms的例子.

编辑:第1部分:将所选值绑定到以下注释示例:

this.Bind(ViewModel, vm => vm.ViewModelProperty, v => v.comboBox.SelectedValue, comboBox.Events().SelectedValueChanged);
Run Code Online (Sandbox Code Playgroud)

我收到错误: CS1955 Non-invocable member 'Component.Events' cannot be used like a method.

第2部分:将ComboBox中的项绑定到viewmodel中的集合?不知道该怎么做

Cai*_*ete 3

您可以使用该Observable.FromEventPattern方法将事件的触发绑定SelectedIndexChanged到视图模型属性。

comboBoxWithItems.DataSource = ViewModel.ListOfPossibleItemsProperty;
comboBoxWithItems.DisplayMember = "Name";

Observable.FromEventPattern<EventHandler, EventArgs>(
    ev => comboBoxWithItems.SelectedIndexChanged += ev,
    ev => comboBoxWithItems.SelectedIndexChanged -= ev)
    .Select(x => comboBoxWithItems.SelectedItem)
    .BindTo(this, x => x.ViewModel.SelectedItemProperty);
Run Code Online (Sandbox Code Playgroud)