El control ListBox no implementa una propiedad Command. Debo adjuntar alguna funcionalidad al evento SelectionChanged. Alguien sabe cómo puedo hacerlo? Por favor me ayude a¿Cómo puedo realizar SelectionChanged en MVVM ListBox Silverlight
Respuesta
Prefiero usar un enlace al SelectedItem
e implementar cualquier funcionalidad en la configuración de la propiedad de enlace.
<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.
}
}
}
Think este post de Laurent Bugnion le ayudará a resolver el problema:
El post anterior menciona la cuadrícula de datos pero yo creo que va a trabajar con el cuadro de lista también!
Saludos y Feliz Año Nuevo !! :)
Sugeriría usar RelayCommand
. Utilice el MVVM Light Toolkit o simplemente use las clases RelayCommand
y CommandManager
desde Josh Smith's implementations. Yo personalmente uso solo las dos clases, por lo que no necesito todo el kit de herramientas.
Si bien esto definitivamente funcionará, podría haber una manera más fácil dependiendo de lo que esté haciendo. Puede ser más fácil vincular un objeto al SelectedValue
del ListBox
y escuchar ese valor para cambiar.
Gracias a todos por su ayuda) Feliz Año Nuevo !!! –
Básicamente, usted tiene algunas opciones:
- utilizar la propiedad SelectedItem del cuadro de lista para unirse a una propiedad en el backend (es decir, en vista del modelo) y realice la lógica en el colocador como se describe en Cameron MacFarland.
- Utilice una biblioteca de terceros que tenga un evento genérico para ordenar el comportamiento como en el enlace publicado por Pedro Lamas.
- Si no desea usar bibliotecas de terceros o escribir lógica dentro de la propiedad setter es de alguna manera inaceptable, puede crear su propio comportamiento para el control ListBox. Se suscribiría al evento de control
SelectionChanged
y ejecutaría un comando (el comando podría ser una propiedad de dependencia expuesta por el comportamiento).
Ésta es la manera en que se puede llegar a la Selección cambió eventos en su MVVM Aplicación Primero de todo lo que digo que el Comando de la propiedad sólo funcionan en el botón ahora tenemos que explícitamente vinculante de este inmueble en nuestra acontecimiento cambió Selección como la caja de lista o un cuadro combinado en su XmaI presentar
<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>
para ello hay que añadir Syatem.Windows DLL.La interactividad ahora u tenga que añadir referencias en su archivo XAML espacio de nombres como
xmlns:Local="clr-namespace:System.Windows.Interactivityassembly=System.Windows.Interactivity"
en su clase ViewModel que tiene que definir su mando en la estructura de Con
public ViewModel123()
{
MyCommand = new RelayCommand<string>(TestMethod);
}
ahora crear el método TestMethod que puede manejar el selección cambió evento
private void TestMethod(string parameter)
{
MessageBox.Show(parameter);
}
Espero que esto pueda ayudarlo.
Prefiero esta forma porque creo que es más limpia. –
- 1. ¿Cómo se maneja un ComboBox SelectionChanged en MVVM?
- 2. MVVM (ICommand) en Silverlight
- 3. Cómo gestionar eventos en MVVM
- 4. Cómo manejar el evento SelectionChanged de ComboBox con MVVM en wpf?
- 5. Cómo enlazar indicadores Enums a ListBox En MVVM
- 6. ¿Cómo puedo saber cuándo un ListBox ha terminado de renderizarse en Silverlight?
- 7. Silverlight MVVM Por dónde empezar
- 8. Evento Silverlight 4 + MVVM + KeyDown
- 9. Marco Silverlight MVVM con navegación
- 10. ¿Quién establece DataContext en Silverlight MVVM
- 11. QTableView selectionChanged
- 12. Seleccionar el elemento ListBox solo al hacer clic o presionar la tecla en Silverlight
- 13. Mvvm-Light Silverlight, usando EventToCommand con un Combobox
- 14. Silverlight Navigation usando Mvvm-light (oobe) + MEF?
- 15. Necesita comparación de MVVM/WPF/Silverlight Toolkits
- 16. WPF Listview SelectionChanged evento
- 17. Falta de System.Windows.Interactivity en Silverlight 4 - tutorial ligero de mvvm
- 18. ¿Cómo puedo vincular una enumeración a mi listbox?
- 19. ¿Necesito un controlador de vista para MVVM-light en Silverlight?
- 20. Manejando el estado de la vista en Silverlight con MVVM
- 21. WPF RichTextBox SelectionChanged Rendimiento
- 22. Ventanas plateadas de Silverlight en el patrón MVVM
- 23. Combinación de .NET RIA Services y MVVM en Silverlight 3.0
- 24. ¿Por qué debería usar MVVM en la aplicación Silverlight?
- 25. Comandos de teclas rápidas para Silverlight en MVVM?
- 26. Cómo controlar la posición de desplazamiento de un ListBox en una aplicación MVVM WPF
- 27. WPF: ¿cómo manejo un clic en un elemento de ListBox?
- 28. ¿Debería MVVM ViewModel realizar una conversión/validación de tipo?
- 29. Silverlight MVVM modelo de enlace y vista modelo
- 30. Silverlight MVVM - Habilitar botones y propiedades de visibilidad
Consejo excelente, gracias – James
¿Funcionará con la selección múltiple? – Simsons
@Simsons Solo si tiene una forma de enlazar a la selección múltiple. Creo que la propiedad SelectedItem se ignora durante la selección múltiple. –