Vous pouvez y parvenir en créant un comportement, comme celui-ci:
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, utilisez dans votre zone de texte, comme ceci:
<Grid x:Name="LayoutRoot" Background="White">
<TextBox TextWrapping="Wrap" VerticalAlignment="Top" Margin="10">
<i:Interaction.Triggers>
<i:EventTrigger EventName="TextChanged">
<ASD_Answer009_Behaviors:UpperCaseAction/>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
</Grid>
Où i:
est un espace de noms pour
clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity
Code derrière:
System.Windows.Interactivity.EventTrigger eventTrigger = new System.Windows.Interactivity.EventTrigger("TextChanged");
eventTrigger.Actions.Add(new UpperCaseAction());
System.Windows.Interactivity.Interaction.GetTriggers(myTextBox).Add(eventTrigger);
Afin de créer et d'utiliser les comportements, vous devez télécharger et installer le Expression Blend SDK for Silverlight 4 et ajouter une référence à System.Windows.Interactivity.dll.
Merci. Cela fonctionne magnifiquement – VRamesh