Элемент управления ListBox не реализует свойство Command. Мне нужно прикрепить некоторые функции к событию SelectionChanged. Кто-нибудь знает, как я могу это сделать? Пожалуйста, помогите мнеКак я могу реализовать SelectionChanged в MVVM ListBox Silverlight
ответ
Я предпочитаю использовать привязку к SelectedItem
и реализовать любую функциональность в настройке свойства привязки.
<ListBox ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem}" />
...
public class ViewModel
{
public IEnumerable<Item> Items { get; set; }
private Item selectedItem;
public Item SelectedItem
{
get { return selectedItem; }
set
{
if (selectedItem == value)
return;
selectedItem = value;
// Do logic on selection change.
}
}
}
Думают, что это сообщение от Laurent Bugnion поможет вам решить эту проблему:
Пост выше упоминает DataGrid, но я думаю, что он будет работать с ListBox тоже!
С наилучшими пожеланиями и с Новым годом! :)
Я бы предложил использовать RelayCommand
. Используйте либо MVVM Light Toolkit, либо просто используйте классы RelayCommand
и CommandManager
от Josh Smith's implementations. Я лично использую только два класса, поэтому мне не нужен весь инструментарий.
Хотя это, безусловно, будет работать, может быть проще, в зависимости от того, что вы делаете. Это может быть проще связать объект с SelectedValue
ListBox
и прослушать, чтобы это значение изменилось.
Спасибо вам всем за помощь) С Новым годом !!! –
В основном у вас есть несколько вариантов:
- Используйте свойство SelectedItem из ListBox для привязки к свойству в интерфейсе (то есть в модели представления) и выполнять логику в сеттере, как описано Cameron MacFarland.
- Используйте стороннюю библиотеку, которая имеет общее событие для управления поведением, как в ссылке, размещенной Pedro Lamas.
- Если вы не хотите использовать сторонние библиотеки или писать логику внутри устройства настройки свойств, вы как-то неприемлемы, вы можете создать свое собственное поведение для элемента управления ListBox. Он будет подписаться на событие управления
SelectionChanged
и выполнить команду (команда может быть свойством зависимостей, отображаемым поведением).
Это путь, где вы можете достичь Выбор изменили события в вашей MVVM Применение Прежде всего, я говорю вам, что команда недвижимости работают только в Баттона теперь мы должны Явное связывания этого имущества в нашем выборе Changed события как список или поле со списком поле в вашем XMAL файл
<ListBox Name="MyListBox" ItemsSource="{Binding ListItems}" Height="150" Width="150" Margin="281,32,-31,118">
<Local:Interaction.Triggers>
<Local:EventTrigger EventName="SelectionChanged">
<Local:InvokeCommandAction Command="{Binding MyCommand}" CommandParameter="{Binding ElementName=MyListBox,Path=SelectedItem}"/>
</Local:EventTrigger>
</Local:Interaction.Triggers>
</ListBox>
для этого нужно добавить DLL Syatem.Windows.Интерактивность Теперь у вас добавить ссылки в вашей XAML пространства имен файлов, как
xmlns:Local="clr-namespace:System.Windows.Interactivityassembly=System.Windows.Interactivity"
в вашем ViewModel класса вы должны определить свою команду в структуре Con
public ViewModel123()
{
MyCommand = new RelayCommand<string>(TestMethod);
}
Теперь создать метод TestMethod, который может обрабатывать выбор измененного события
private void TestMethod(string parameter)
{
MessageBox.Show(parameter);
}
Надеюсь, это поможет.
Я предпочитаю этот путь, поскольку я думаю, что он чище. –
- 1. ListBox SelectionChanged событие с MVVM и CommandParameter
- 2. SelectionChanged события связывания в Silverlight + MVVM-Light
- 3. Silverlight MVVM привязывает ListBox
- 4. ComboBox SelectionChanged в MVVM
- 5. Как я могу реализовать пейджинг в MVVM?
- 6. SelectionChanged of child ListBox
- 7. Повторный заказ Silverlight Listbox - MVVM-stylee
- 8. ListBox SelectionChanged Не розжига
- 9. WPF ListBox SelectionChanged событие
- 10. Сгруппированная ListBox и SelectionChanged
- 11. Silverlight ListBox Группировка с использованием MVVM
- 12. DataGridComboBoxColumn SelectionChanged событие в MVVM
- 13. Конвекция MVVM Light с SelectionChanged
- 14. ComboBox в ListBox не запускает событие SelectionChanged
- 15. Как вы обрабатываете ComboBox SelectionChanged в MVVM?
- 16. ClearSelection в ListBox MVVM
- 17. WPF ListBox DataContextChanged триггеры SelectionChanged
- 18. Как реализовать функцию ListBox ScrollIntoView в ViewModel
- 19. ListBox SelectionChanged не получает вызов
- 20. wp7/Silverlight] Как анимировать ListBoxItem в SelectionChanged?
- 21. Инфраструктура XamDataGrid WPF MVVM SelectionChanged
- 22. ListBox SelectionChanged только один раз?
- 23. Silverlight MVVM ListBoxItem IsSelected
- 24. Silverlight Listbox выбор ItemTemplate
- 25. Bind ListBox to SelectionChanged ComboBox в XAML
- 26. Как реализовать MVVM с NavigationService в Silverlight 4?
- 27. Как реализовать MVVM в Silverlight с помощью службы навигации?
- 28. silverlight MVVM Вид в представлении
- 29. Silverlight MVVM - привязка без изменений в списке Listbox нажимается
- 30. Как я могу расширить ComboBox для поддержки команд (MVVM)?
Отличный совет, спасибо – James
Будет ли он работать с несколькими выборами? – Simsons
@Simsons Только если у вас есть способ привязки к множественному выбору. Я считаю, что свойство SelectedItem игнорируется во время multi-select. –