【问题标题】:Silverlight Stringformat : malformed string returns empty string instead of exceptionSilverlight Stringformat:格式错误的字符串返回空字符串而不是异常
【发布时间】:2011-11-15 08:55:44
【问题描述】:

这是我的代码 sn-p:

<TextBox Text="{Binding Path=Amount, Mode=TwoWay, StringFormat=\{0:N\}}" />

如果用户输入字母或大数字等,stringformat 会默默地死掉。我怎样才能引发异常?

谢谢

【问题讨论】:

    标签: silverlight silverlight-4.0


    【解决方案1】:

    当文本输入无法转换为源对象的属性所需的数据类型时,绑定会吞下异常。但是,您可以在绑定中指定 ValidatesOnException。这将导致转换问题的标准红色边框报告。顺便说一句,这与仅与显示当前值相关的字符串格式属性无关,当用户输入数据时它不起作用。

        <TextBox Text="{Binding Path=Amount, Mode=TwoWay, StringFormat=\{0:N\}, ValidatesOnExceptions=True}" HorizontalAlignment="Left" Width="200"/>
    

    注意我限制了宽度并左对齐。默认验证弹出窗口的问题之一是它始终显示在右侧,当文本框右边框与 silverlight 控件右边缘的右边缘齐平时,这有点问题。

    【讨论】:

    • 我仍然需要编辑我的大量字段,但它比我想要的要好,所以谢谢 :)
    • validatesOnException 很棒,但我有一个本地化问题:stackoverflow.com/q/7399822/204682
    【解决方案2】:

    您是否想过编写一个过滤器行为,让您可以准确控制文本框中的内容?

    【讨论】:

    • 在 WPF/Silverlight 中,您可以为控件类型编写可重用的行为。对于您的场景,您可以编写一个限制输入文本类型的文本框行为,例如仅限数字。阅读这些内容以获得一些想法:dataartist.net/blog/post/…csharperimage.jeremylikness.com/2009/10/…
    • 我希望避免向我的海量字段添加属性:/ 但是谢谢,如果没有别的,它会起作用。
    • 或者你可以让 Silverlights 自己的验证系统来处理它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多