Estoy haciendo una refacturación de una aplicación simple para seguir MVVM y mi pregunta es ¿cómo puedo mover un evento SelectionChanged fuera de mi código al viewModel? He visto algunos ejemplos de elementos vinculantes para los comandos pero no los entendí del todo. ¿Alguien puede ayudar con esto? ¡Gracias!WPF Vinculación de eventos de UI a comandos en ViewModel
¿Alguien puede proporcionar una solución utilizando el siguiente código? ¡Muchas gracias!
public partial class MyAppView : Window
{
public MyAppView()
{
InitializeComponent();
this.DataContext = new MyAppViewModel();
// Insert code required on object creation below this point.
}
private void contactsList_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
//TODO: Add event handler implementation here.
//for each selected contact get the labels and put in collection
ObservableCollection<AggregatedLabelModel> contactListLabels = new ObservableCollection<AggregatedLabelModel>();
foreach (ContactListModel contactList in contactsList.SelectedItems)
{
foreach (AggregatedLabelModel aggLabel in contactList.AggLabels)
{
contactListLabels.Add(aggLabel);
}
}
//aggregate the contactListLabels by name
ListCollectionView selectedLabelsView = new ListCollectionView(contactListLabels);
selectedLabelsView.GroupDescriptions.Add(new PropertyGroupDescription("Name"));
tagsList.ItemsSource = selectedLabelsView.Groups;
}
}
Gracias. Soy un novato en la programación, así que discúlpeme: ¿puede dar un ejemplo con el código que le proporcioné? – Ben
Básicamente necesita crear una propiedad de comando en su ViewModel llamada "SelectedItemChangedCommand". Commanding es similar a los eventos, pero un comando solo puede tener una función de devolución de llamada, a diferencia de los eventos. Verifique los documentos: http://msdn.microsoft.com/en-us/library/ms752308.aspx – Brian
Si no tiene Expression Blend, necesitará el SDK: http://www.microsoft.com/downloads/ es/details.aspx? FamilyID = D197F51A-DE07-4EDF-9CBA-1F1B4A22110D & displaylang = en – Murven