MVVM vo WPF a Eventy rubrika: Programování: Jiné

7 xxar3s
položil/-a 24.2.2013

Ako v MVVM aplikacii priradit do View eventy? Pouzil som na tento ucel Commandy, ale to sa da pouzit iba tam, kde nepotrebujem sender a eventArgs. Ked mam napriklad Listbox a v kazadom ItemTemplate mam Button, tak bez senderu neviem zistit ktory Button mi udalost poslal.

odkaz
9 Honza Břešťan
odpověděl/-a 24.2.2013
 
upravil/-a 24.2.2013

Command umi poslat parametr, ktery muze byt nabindovany na "self", coz presne kopiruje "sender" u eventu.

Neco na zpusob:

<Button ... Command="..." CommandParameter="{Binding RelativeSource={RelativeSource Self}}" />

ICommand predepisuje metody, ktere ten parametr umi prijmout, tady jsou nejake priklady.

Ve zpracovani commandu pak jen pretypujte predany parametr na Button a mate sendera.

Hotove MVVM frameworky jako MVVMLight maji i genericke commandy, ktere se staraji o pretypovani parametru a pripadny error handling, ale neni vubec tezke tu funkcionalitu opsat, pokud uz mate vlastni framework a nechcete migrovat.

Komentáře

  • xxar3s : Vdaka, toto som presne potreboval. 24.2.2013
  • Honza Břešťan : Jen me tak napada, ze to mozna nebude idealni reseni. Na co je vlastne potreba instance toho buttonu? Pokud se to jen tyka vzhledu, napr. se meni Enabled, zobrazeny text apod., slo by to vyresit ve View - klidne i v codebehindu, pokud je to nutne, ale drzel bych se dal od ViewModelu. Samozrejme neni problem mit jak Command, tak event, kde Command se stara o logiku, event jen o zmeny v GUI. 25.2.2013

Pro plný přístup na Devel.cz se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.