2016-05-25 19 views
0

ReactiveUI(6.5、これまでの最新バージョン)を使用して、WinFormsでMVVMパターンをテストするための小さなアプリケーションを開発しています。コマンド(ReactiveCommand)といくつかのプロパティとテキストボックス間のバインディングについていくつかの進歩を遂げました。 ReactiveListをリストボックスにバインドしようとしています(私の意図は、リストボックスに要素が追加されると自動的にリストボックスを更新し、リストボックス内の新しい要素を表示することです)。ここでWinforms-Reactiveui 6.5 ListBoxへのバインド

コード:

のViewModel:

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; } 
     } 
} 

その上の任意のアイデア?私の意図は、リスト(dataGrids、listViews、listBoxesなど)と一緒に使用するのが理にかなったさまざまなコントロールで使用することです。テキストボックスで行われるのと同じ方法で、できればそれを行う方法があります。

答えて

0

ReactiveBindingListの代わりにReactiveListを使用してください。

関連する問題