From dff22927b69e5878066ca7340f2ce185e29da12c Mon Sep 17 00:00:00 2001 From: brianlagunas_cp Date: Fri, 21 Jan 2011 19:20:00 +0000 Subject: [PATCH] MaskedTextBox: implemented paste --- .../MaskedTextBox/MaskedTextBox.cs | 35 +++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MaskedTextBox/MaskedTextBox.cs b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MaskedTextBox/MaskedTextBox.cs index 18207980..e17629c9 100644 --- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MaskedTextBox/MaskedTextBox.cs +++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MaskedTextBox/MaskedTextBox.cs @@ -103,6 +103,9 @@ namespace Microsoft.Windows.Controls TextBox = GetTemplateChild("TextBox") as TextBox; TextBox.PreviewTextInput += TextBox_PreviewTextInput; TextBox.PreviewKeyDown += TextBox_PreviewKeyDown; + + TextBox.CommandBindings.Add(new CommandBinding(ApplicationCommands.Paste, Paste)); //handle paste + TextBox.CommandBindings.Add(new CommandBinding(ApplicationCommands.Cut, null, CanCut)); //surpress cut } protected override object ConvertTextToValue(string text) @@ -142,7 +145,7 @@ namespace Microsoft.Windows.Controls value = string.Empty; //I have only seen this occur while in Blend, but we need it here so the Blend designer doesn't crash. - if (MaskProvider == null) + if (MaskProvider == null) return value.ToString(); MaskProvider.Set(value.ToString()); @@ -190,7 +193,6 @@ namespace Microsoft.Windows.Controls void TextBox_PreviewKeyDown(object sender, KeyEventArgs e) { - base.OnPreviewKeyDown(e); MaskedTextProvider provider = MaskProvider; int position = TextBox.SelectionStart; int selectionlength = TextBox.SelectionLength; @@ -232,6 +234,8 @@ namespace Microsoft.Windows.Controls e.Handled = true; } + + base.OnPreviewKeyDown(e); } #endregion //Event Handlers @@ -270,5 +274,32 @@ namespace Microsoft.Windows.Controls } #endregion //Methods + + #region Commands + + private void Paste(object sender, RoutedEventArgs e) + { + MaskedTextProvider provider = MaskProvider; + int position = TextBox.SelectionStart; + + object data = Clipboard.GetData(DataFormats.Text); + if (data != null) + { + string text = data.ToString().Trim(); + if (text.Length > 0) + { + provider.Set(text); + UpdateText(provider, position); + } + } + } + + private void CanCut(object sender, CanExecuteRoutedEventArgs e) + { + e.CanExecute = false; + e.Handled = true; + } + + #endregion //Commands } }