2013-10-01 2 views
0

Вот дело: я должен взять SelectedItem из Listbox, что я получил от this question и добавить его в ListBox в другой UserControl. Модели ViewModels и модели настроены, мне просто нужно знать, как обращаться к ListBox, который получает элементы.Как привязать к ListBox в ViewModel

Это будет под ViewModel A - ViewModel, который управляет пользовательским элементом управления ListBox, который получает элементы.

//This is located in ViewModelA 
private void buttonClick_Command() 
{ 
    //ListBoxA.Items.Add(ViewModelB -> SelectedListItem); 
} 

Я не понимаю, как получить ListBoxA.

Будет ли это ObservableCollection от strings?

Для уточнения: ListBoxA, контролируемый ViewModelA, будет получать значения из ListBoxB в ViewModelB. Я включил свойство ViewModelB в ViewModelA

ответ

1

Необходимо иметь свойство в ViewModelA, которое может быть любым типом, который реализует IEnumerable. Я буду использовать список:

public const string MyListPropertyName = "MyList"; 

    private List<string> _myList; 

    /// <summary> 
    /// Sets and gets the MyList property. 
    /// Changes to that property's value raise the PropertyChanged event. 
    /// </summary> 
    public List<string> MyList 
    { 
     get 
     { 
      return _myList; 
     } 

     set 
     { 
      if (_myList == value) 
      { 
       return; 
      } 

      RaisePropertyChanging(MyListPropertyName); 
      _myList = value; 
      RaisePropertyChanged(MyListPropertyName); 
     } 
    } 

Затем в Listbox, вам нужно установить ItemsSource в этот список

<ListBox ItemsSource="{Binding MyList}"> 
    ....... 
</ListBox> 

Теперь в вашем строителю, заполнить MyList с данными, который вы хотите отобразить, и на Add Command, вы хотите поставить

MyList.Add(ViewModelB.myString); 

ViewModelB.myString при условии вашего предыдущего вопроса, что в ViewModelB у вас есть свойство MyString привязанный к SelectedItem из ListBoxB, и у вас есть ссылка на экземпляр ViewModelB в ViewModelA.

Это должно сделать это, дайте мне знать,

Update:

Вы должны быть с помощью ObservableCollection в ВМА, поскольку сбор будет добавлен.

Смежные вопросы