首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在WPF中实现TextBox.InputScope

如何在WPF中实现TextBox.InputScope
EN

Stack Overflow用户
提问于 2012-06-03 23:47:33
回答 4查看 12.4K关注 0票数 1

我正在寻找一种方法来实现文本框的InputScope,就像在Wp7中做的那样,但使用经典的WPF。

我想要实现的是,输入被限制为只使用十进制数。我怎样才能做到这一点呢?

代码语言:javascript
复制
<TextBox Text="{Binding Amount, Mode=TwoWay}" InputScope="Number"/>

对于经典的WPF来说,InputScope是一个有效的属性,但不幸的是,它似乎不起作用。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-06-12 16:15:57

InputScope不会强制对输入进行任何类型的验证或限制。它是对输入处理器的提示(例如,屏幕上的键盘、语音识别)可以在控件中输入的数据类型。

仅当激活IME (如屏幕上的键盘)时才使用此值。

即使在WP7中,InputScope也不限制可以在文本框中输入的值。如果您可以安装一个忽略InputScope的输入处理器,您仍然可以输入不需要的字符。

如果要将文本输入限制为特定字符,则必须使用MaskedTextBox或拦截击键事件。代码也会更容易理解。

可以使用InputManager的PreProcessInput事件通过InputScope过滤输入事件,但可能不值得这么做。

票数 7
EN

Stack Overflow用户

发布于 2012-06-04 03:37:04

没有内置的方法可以做到这一点。你需要写一些代码来实现你想要的东西。下面是你需要做的一个例子:WPF Maskable TextBox for Numeric Values

票数 1
EN

Stack Overflow用户

发布于 2012-06-08 07:49:05

然而,从MSDN文档(herehereherehere )中我还没有使用过InputScope,它的输入范围似乎需要更复杂的输入。

应该将xmlns:swi映射到System.Windows.Input

代码语言:javascript
复制
<TextBox>
    <TextBox.InputScope>
        <swi:InputScope RegularExpression="^(0|(-(((0|[1-9]\d*)\.\d+)|([1-9]\d*))))$" />
    </TextBox.InputScope>
</TextBox>

(在Google上找到Regex字符串,我还没有检查过它。)

或者:

代码语言:javascript
复制
<TextBox>
    <TextBox.InputScope>
        <swi:InputScopePhrase>
            <swi:InputScopePhrase.Names>Number</swi:InputScopePhrase>
        </swi:InputScopePhrase>
    </TextBox.InputScope>
</TextBox>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10871713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档