C'est une bonne question, et c'est une commune, mais "résolu" (ce qui reste discutable) problème au sein de l'architecture MVVM royaume. Si vous utilisez un framework MVVM, vous êtes susceptible de trouver quelque chose de similaire à la EventToCommand Problème, ici, est l'exemple de la MVVM Light Toolkit.
En bref, cela permet d'associer un événement à une liaison de commande comme ceci:
<Rectangle Fill="White"
Stroke="Black"
Width="200"
Height="100">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseEnter">
<cmd:EventToCommand Command="{Binding TestCommand,
Mode=OneWay}"
CommandParameter="{Binding Text,
ElementName=MyTextBox,
Mode=OneWay}"
MustToggleIsEnabledValue="True" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Rectangle>
Mise à jour:
Il y a deux autres "raisonnable" des solutions à ce problème:
On utilise le maintenant considéré comme l'héritage "AttachedCommandBehavior" extension trouvé ici.
L'autre est un peu irritant, mais efficace.
- Capture d'une commande via fr
événement purement dans la vue.
- Requête de la DataSource du contrôle de l'Étape
- Saisir une chaîne de liaison de la cible
identificateur qui dénote de votre commande
(peut-être l'aide d'un const string sur la
afficher)
- Invoquer votre commande sur
le modèle de vue par la réflexion et l'
passer dans les arguments de la commande.
Cela ressemble brut, mais je suis assez certain, c'est effectivement un peu plus rapide que de simplement en utilisant la commande traditionnelle
les liaisons. Afin d'être sûr que j'avais besoin de voir l'IL, et je ne pense pas que c'est important dans ce cas.
/Mise à jour
Je veux noter, cependant, que ce n'est pas toujours une situation idéale. J'ai découvert que le plus souvent, je suis en utilisant EventToCommand pour couvrir un problème de conception. Veuillez considérer ce qui suit:
- Les événements d'utilisation et du code associé à la poignée de l'Interface Utilisateur liées à des comportements.
- Envisager la création de contrôles personnalisés qui ont les liaisons de commande le cas échéant, en particulier si vous vous trouvez à l'aide de commandes pour encapsuler event driven bevahior à l'ensemble des données liées qui se reflète ensuite dans la vue. (c'est à dire le réglage d'une valeur de transparence basée sur la proximité d'un contrôle ou quelque chose de similaire)
- EventToCommand devrait plus susceptible d'être utilisé pour traiter la Commande "-comme" événements " seulement (un double-clic, etc) et non réactif événements (passage de la souris). Cependant rien n'empêche que cette. Mettre en œuvre comme bon vous semble.
Le plus important est peut-être que vous vous rappelez que vous êtes le développeur. Les lignes directrices elles-mêmes ne résout pas les problèmes, mais l'examen des lignes directrices peut apporter la solution à un problème apparent.