Zajmuję się refaktoryzacją prostej aplikacji do śledzenia MVVM i moje pytanie brzmi: jak przenieść zdarzenie SelectionChanged z mojego kodu do widokuModel? Przyjrzałem się niektórym przykładom elementów wiążących komend, ale nie byłem w stanie ich zrozumieć. Czy ktoś może w tym pomóc? Dzięki!Zdarzenia związane z UI wiązania do poleceń w ViewModel
Czy ktoś może dostarczyć rozwiązanie za pomocą poniższego kodu? Wielkie dzięki!
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;
}
}
Dzięki. Jestem początkującym programistą, więc wybacz mi - czy jesteś w stanie podać przykład używając kodu, który podałem? – Ben
Po prostu trzeba utworzyć właściwość polecenia w swoim ViewModel o nazwie "SelectedItemChangedCommand". Rozkazy są podobne do zdarzeń, ale polecenie może mieć tylko jedną funkcję zwrotną, w przeciwieństwie do zdarzeń. Sprawdź dokument: http://msdn.microsoft.com/en-us/library/ms752308.aspx – Brian
Jeśli nie masz Expression Blend, będziesz potrzebował SDK: http://www.microsoft.com/downloads/ pl/details.aspx? FamilyID = D197F51A-DE07-4EDF-9CBA-1F1B4A22110D i displaylang = en – Murven