我正在使用ReactiveUI(6.5,迄今为止的最新版本)开发一个使用WinForms测试MVVM模式的小应用程序。我在命令(ReactiveCommand)和属性与TextBoxes之间的一些绑定方面取得了一些进展。 我现在陷入困境,试图将项目的ReactiveList绑定到列表框(我的目的是自动更新列表框,一旦元素添加到列表中,并查看列表框中的新元素)。
这里是代码:
视图模型:
public class PersonViewModel : ReactiveUI.ReactiveObject
{
(...)
public ReactiveList<int> Ids { get; private set; }
public PersonViewModel ()
{
Ids = new ReactiveList<int>();
(...)
}
//The command that adds a new item inside the list
private void AddPerson(int id)
{
Ids.Add(id);
}
}
的MainForm
public partial class MainForm : Form, IViewFor<PersonViewModel>
{
public MainForm()
{
InitializeComponent();
ViewModel = new PersonViewModel();
//PersonsListBox.DataSource = ViewModel.Ids; -> this was an idea, it doesn't work either
this.WhenActivated(d =>
{
d(this.Bind(ViewModel, x => x.Ids, x => x.PersonsListBox.DataSource)); // Binding attempt, doesn't seem to be working
d(this.BindCommand(ViewModel, x => x.AddPersonCommand, x => x.AddPersonButton)); // Command, it works
});
}
public PersonViewModel ViewModel { get; set; }
object IViewFor.ViewModel
{
get { return ViewModel; }
set { ViewModel = (PersonViewModel)value; }
}
}
有什么想法吗?我的目的是在不同的控件中使用它,这些控件与list(dataGrids,listViews,listBoxes等)一起使用是有意义的,并且希望有一种方法可以实现它,就像使用文本框一样。
答案 0 :(得分:1)
您应该使用ReactiveBindingList
代替ReactiveList
。