Как я могу расширить ComboBox для поддержки команд (MVVM)? - PullRequest
2 голосов
/ 26 мая 2010

Как сказано в теме, мне нужно расширить возможности стандартного ComboBox Silverlight для поддержки Commanding. Поскольку я следую за MVVM, мне нужен мой ComboBox для передачи события SelectionChanged в мою ViewModel.

Как будет выглядеть код для этого? Я хочу иметь возможность поместить атрибут Command в мой элемент управления ComboBox XAML.

Использование (WCF RIA, MVVM, VB.NET) ..

Все советы оценены!

Ответы [ 2 ]

6 голосов
/ 26 мая 2010

Вы можете привязать свойство SelectedIndex или SelectedItem комбинированного списка к своей модели представления. Так что вам не нужны никакие команды.

Пример (привязка к SelectedIndex):

1007 * XAML *

<ComboBox SelectedIndex="{Binding SelectedIndex, Mode=TwoWay}"/>

C #

public class ComboBoxViewModel
{
   private int _selectedIndex;
   public int SelectedIndex {
     get { return _selectedIndex; }
     set { 
       if (value != _selectedIndex) {
         _selectedIndex = value;
         // Perform any logic, when the SelectedIndex changes (aka. PropertyChanged-Notification)
       }
     } 
   }
}

Пример (привязка к SelectedItem):

1017 * XAML *

<ComboBox SelectedItem="{Binding SelectedItem, Mode=TwoWay}"/>

C #

public class ComboBoxViewModel
{
   private MyViewModel _selectedItem;
   public MyViewModel SelectedItem {
     get { return _selectedItem; }
     set { 
       if (value != _selectedItem) {
         _selectedItem= value;
         // Perform any logic, when the SelectedIndex changes ((aka. PropertyChanged-Notification)
       }
     } 
   }
}
1 голос
/ 26 мая 2010

Создайте поведение, которое выставляет ICommand Command и object CommandParameter. В поведении подключитесь к событию SelectionChanged вашего AssociatedObject. Затем вы можете привязать команду к своему поведению и смоделировать команду для события SelectionChanged.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...