2012-07-12 6 views
7

W kontekście wzorca MVVM Microsoftu i jego aspektów Rozkazywania/Obsługi zdarzeń rozważam wykonywanie zarówno wiązania polecenia do kontrolki (powiedzmy przycisku), jak i subskrybowania zdarzenia Click kontrolki.Co jest najważniejsze - Command lub EventHandler?

Czy istnieje ogólna zasada, co ma miejsce w pierwszej kolejności - przetwarzanie kodu skojarzonego z poleceniem lub skojarzonego z odpowiednią funkcją obsługi zdarzeń?

+0

Domyślam się, że najważniejsze jest to, dlaczego zrobiłbyś jedno i drugie. Kluczową rzeczą w korzystaniu z poleceń jest to, że normalnie powiążesz to z ICommand w ViewModel, i robiąc to, VM nie musi nic wiedzieć o Button. Czy jest to przypadek mieszania kodu z maszyną wirtualną? Jeśli używasz maszyny wirtualnej, w jaki sposób wiążesz wydarzenie z przyciskami? – stevethethread

+1

@SteveSolomon Cóż, próbuję radzić sobie z dynamicznego tworzenia kontroli w czasie wykonywania. A żeby uszanować wzór MVVM, staram się pozostawić cały niezbędny kod w WIDOKU. Obecnie używam wiązania poleceń dla połączenia między VIEW/VIEWMODEL a EventHandlers dla manipulacji "Inter-VIEW". –

+0

Nie sądzę, że jest specyficzny. * Myślę, że * z ręki pierwsza osoba, która subskrybuje to wydarzenie, zostanie podniesiona jako pierwsza. Jeśli polecenie jest podłączone do XAML, spodziewałem się, że najpierw zasubskrybuje. Ale istnieje więcej niż jeden sposób na skórze kota. –

Odpowiedz

5

EventHandlers są wyzwalane przed powiązaną ICommand.

+2

To się zgadza. Od czasu do czasu robiłem to wcześniej, gdy chcę, aby przed przetworzeniem polecenia wystąpił pewien specyficzny test. Jeśli kontrola nie powiedzie się, zdarzenie może anulować polecenie. – Rachel

+0

Dziękuję bardzo. –