Bonjour à tous,
débutant en Silverlight, j'essaie d'utiliser un évement simple se respectant le modèle MVVM.
Cet exemple que j'ai trouvé sur le Net correspond bien à mon besoin initial de mettre en majuscule le texte d'une textbox au fur à mesure de la saisie.
Ce code se découpe de la facon suivante :
Création d'une classe cConverter.cs contenant le code suivant :
Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 using System; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Ink; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using System.Windows.Data; using System.Windows.Interactivity; namespace slnMySolution { public class cConverters { } public class UpperCaseAction : TriggerAction<TextBox> { protected override void Invoke(object parameter) { var selectionStart = AssociatedObject.SelectionStart; var selectionLenght = AssociatedObject.SelectionLength; AssociatedObject.Text = AssociatedObject.Text.ToUpper(); AssociatedObject.SelectionStart = selectionStart; AssociatedObject.SelectionLength = selectionLenght; } } }
Ensuite coté XAML, je dois inscrire le code suivant pour déclendcher l'évenement lors du changement de texte dans ma textbox...
Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" <Grid x:Name="LayoutRoot" Background="White"> <TextBox TextWrapping="Wrap" VerticalAlignment="Top" Margin="10"> <i:Interaction.Triggers> <i:EventTrigger EventName="TextChanged"> <i:InvokeCommandAction Command="UpperCaseAction"/> </i:EventTrigger> </i:Interaction.Triggers> </TextBox> </Grid>
et donc le Code behind à implémenter :
Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 System.Windows.Interactivity.EventTrigger eventTrigger = new System.Windows.Interactivity.EventTrigger("TextChanged"); eventTrigger.Actions.Add(new UpperCaseAction()); System.Windows.Interactivity.Interaction.GetTriggers(myTextBox).Add(eventTrigger);
Mon seul problème se situe dans la dernière partie de code, je n'ai aucune idée de la manière de l'utiliser (ou, pourquoi?).
Je cherche donc une explication plus détaillée de cet exemple.
Merci pour vos réponses.
Seb
Partager