我的WPF文本框控件有问题。我想只输入数值。简单的解决方案是在isNumeric()
事件中调用函数PreviewKeyDown
,但问题是如果我将数字复制到剪贴板然后将其粘贴到文本框中,则不会调用检查代码。我该如何处理粘贴的数字?
答案 0 :(得分:0)
请参阅DataObject.AddPastingHandler
或查看this question,了解更广泛的问题解决方案。
答案 1 :(得分:0)
我使用自己的类,它是从TextBox派生的。在构造函数中,我使用ApplicationCommands.Paste创建一个CommandBinding()。在“CanPaste”方法中,我检查粘贴的文本(无法显示示例代码,因为它来自工作)。
纸浆
答案 2 :(得分:-1)
如果您正在使用cinch,只需使用此优秀框架中的附加行为即可。 但如果没有,你可以受到这个链接的启发,他(cinch的作者)通过附加的行为来解决这个问题:http://www.codeproject.com/KB/WPF/CinchII.aspx#NumericAtt
编辑: 魔术就在这里,他“禁用”粘贴
TextBox tb = sender as TextBox;
if (tb == null)
return;
tb.PreviewTextInput -= tbb_PreviewTextInput;
DataObject.RemovePastingHandler(tb, OnClipboardPaste);
bool b = ((e.NewValue != null && e.NewValue.GetType() == typeof(bool))) ?
(bool)e.NewValue : false;
if (b)
{
tb.PreviewTextInput += tbb_PreviewTextInput;
DataObject.AddPastingHandler(tb, OnClipboardPaste);
}