1 pièce(s) jointe(s)
EventTrigger et utilisation de CallDataMethod
Bonsoir/bonjour !
Aujourd'hui, j'ai du apporter une modification à un petit projet en suspend... Globalement, j'avais ceci dans un DataForm
Code:
1 2 3 4 5 6
|
<interactivity:Interaction.Triggers>
<interactivity:EventTrigger EventName="DeletingItem">
<interactivity:InvokeCommandAction Command="{Binding ContentLoadedCommand}" />
</interactivity:EventTrigger>
</interactivity:Interaction.Triggers> |
Avec pour code dans le ViewModel :
Code:
1 2 3 4 5 6 7 8 9
|
DeletingItemCommand = new RelayCommand<object>(OnDeletingItem);
......
private void OnDeletingItem(object param)
{
........
} |
Tout se passait bien, je faisais ce que j'avais à faire là et ça passait bien dedans lors d'un click sur le bouton "-".
Voulant demander une confirmation à l'utilisateur, je dois maintenant avoir accès au CancelEventArgs et j'aimerais donc changer mon TriggerEvent en me servant de CallDataMethod à la place de InvokeCommandAction.
J'aurais alors une méthode comme
Code:
private void DataformBillDeletingItem(object sender, CancelEventArgs e)
Il est possible qu'il existe une autre façon de faire mais j'aurai de toute façon besoin de ce CallDataMethod pour d'autres projets...
J'ai vu dans ces deux articles (et ailleurs encore) comment procéder :
http://goldytech.wordpress.com/2010/...dling-in-mvvm/
http://wildermuth.com/2009/09/02/Why..._Are_Important
Ça ne semble vraiment pas sorcier et les changements à faire sont minimes... Et pourtant je n'y arrive pas... J'ai installé les Samples du Codeplex d'Expression et j'insère la référence Expression.Samples.Interactivity dans mes références puis je vois différents soucis d'assembly, etc.
Je tente alors de faire d'abord mes tests dans un projet vierge pour ne pas apporter de soucis à mon travail précédent :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
<ListBox x:Name="LstFruits"
ItemsSource="{Binding FruitsCollection}"
DisplayMemberPath="FruitName"
SelectionMode="Multiple"
Grid.Row="0">
<swi:Interaction.Triggers>
<swi:EventTrigger EventName="SelectionChanged">
<esi:CallDataMethod Method="LstFruits_SelectionChanged" />
</swi:EventTrigger>
</swi:Interaction.Triggers>
</ListBox> |
Et idem, ici j'ai une erreur :
Citation:
A value of type 'CallDataMethod' cannot be added to a collection or dictionary of type 'TriggerActionCollection'
Je joints un screenshot des références de mon projet...
Quelqu'un a-t-il une idée du soucis ? :? Quelqu'un a déjà utilisé ce CallDataMethod qui semble fort pratique ?
Merci d'avance !