返回首页


的代码项目的常客之一,问到如何。他担心,似乎没有一个简单的机制来限制输入的数据,因此,它仅接受有关数字金额。那么,这是我最近Goldlight添加一个功能,所以我想我会张贴在这里,解释它是如何工作的。
基本上,这种情况会感到惊讶,因为没有给你,它的一个附加行为关联到TextBox。有很多数字只有行为,所以此去一点点。首先,如果你愿意,你可以限制为整数,设置AllowDecimal为false。如果你想限制它的小数位的设置数量,设置DecimalLimit小数位数。如果您不希望允许开发人员使用负数,设置AllowNegatives为false。就是这么简单,所以解决问题的办法,将添加这样的TextBox的行为:

<TextBox Text="{Binding Price}">

  <i:Interaction.Behaviors>

    <gl:NumericTextBoxBehavior AllowNegatives="False" />

  </i:Interaction.Behaviors>

</TextBox>

做,这是完整的代码如下所示:{C}
聪明的事情是,此行为不会允许用户粘贴在任何一个不正确的值吗?粘贴操作是直接进入摆在首位的价值相同的规则。
无论如何,我希望这种行为是尽可能多的使用,因为它是我给你。

回答

评论会员:d_weyermann 时间:2012/01/27
这是很好的行为,不幸的是,它不能正常工作与UpdateSourceTrigger = PropertyChanged的。如果我设置UpdateSourceTrigger = PropertyChanged的AllowDecimal = TRUE任何进展顺利,直到我输入任何字符后面的小数点。 Validate()方法抛出一个ArgumentOutOfRangeException在这种情况下
评论会员:。gardnerp 时间:2012/01/27
太棒了,谢谢你!正是我一直在寻找。我也需要最大/最小值。哑文本转换到双一旦验证检查?我无法检查长度的最大值,因为可能会像500的东西
评论会员:。SandeepMewara 时间:2012/01/27
对不起,这么久的我答复。出于某种原因,我没有得到消息的通知。

无论如何,如果你需要一个最大/最小值,随时添加一个属性范围 - 但是,考虑会发生什么,如果你有一个0至500的范围和用户类型60然后按0。正如你所期望的的,不应该让他们输入的值,但是这可能是一个惊喜给用户。这一切都取决于你的用户,以及他们如何反应范围检查。原谅你的敌人 - 他们的头,它的餐厅
{A} - 我最喜爱的实用工具