Bonjour à tous,
voilà le petit soucis que je rencontre, sur un Calendar du framework 4 j'ai attaché une command lors d'un évènement de celui-ci qui est le "SelectedDatesChanged".
Jusque là aucun problème, tout fonctionne, mais après quelques modifications, il faut que je passe 2 paramètres dans le CommandParameter, je me suis donc penché sur le multibinding ainsi que sur l'interface IMultiValueConverter. J'ai suivis les instructions et cela à l'aire de fonctionné mais seulement au lancement de l'application si bien que lorsque je sélectionne une autre date dans mon Calendar, le binding ne fonctionne pas et garde seulement la valeur au lancement de l'application.
J'ai peut être oublié un paramètre mais je ne vois pas lequel...
Comment faire pour que lorsque j'appelle l'évènement SelectedDatesChanged, le converter récupère bien la nouvelle date sélectionné et non celle prise au lancement de l'application car sinon cela ne sert à rien
Si vous avez une idée je suis preneur, je vous met le code en dessous.
Code Xaml :
Classe Converter
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <Calendar Name="calendarMonth" Height="Auto" Width="Auto" SelectedDate="{Binding Path=DisplayDate.Date, ElementName=calendarMonth, Mode=OneWay}" IsTodayHighlighted="True" behaviors:EventBehavior.EventName="SelectedDatesChanged" behaviors:EventBehavior.Command="{Binding Path=SelectedChangedDateCommand}" > <behaviors:EventBehavior.CommandParameter> <MultiBinding Converter="{StaticResource CalendarConvertArg}"> <Binding ElementName="calendarMonth" Path="SelectedDate"/> <Binding ElementName="calendarView"/> </MultiBinding> </behaviors:EventBehavior.CommandParameter> </Calendar>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture) { DateTime d = (DateTime)values[0]; My.Calendar c = values[1] as My.Calendar; ArrayList list = new ArrayList() {c, d}; return list; }
Partager