【问题标题】:How to clear a masked TextEdit with Delete or BackSpace如何使用 Delete 或 BackSpace 清除蒙版的 TextEdit
【发布时间】:2017-10-10 04:24:16
【问题描述】:

我有以下TextEdit,绑定到一个可为空的字段(Value1)

 <dxe:TextEdit EditValue="{Binding Path=Data.Value1, TargetNullValue={x:Null}, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" EditValueType="{x:Type sys:Double}" Mask="##.# miles" />

当我点击BackSpace时,它显示了remainig mask部分(像这样:.miles),并且它的EditValue在后台设置为0(这是错误的因为它绑定到一个可为空的字段)

我打算在使用 BackSpace 或 Delete 时使 EditValue 为 null。

如果没有转换器或 KeyPress 事件处理程序,我怎么能做到这一点?

【问题讨论】:

    标签: devexpress devexpress-wpf


    【解决方案1】:

    这实际上是可能的,您只需将 AllowNullInput 设置为 true。您可能还想更改您的掩码,使其不只显示文本 。当您删除每个值时,里程

    这是我的示例:

    <Grid Background="DimGray">
    
            <dxe:TextEdit EditValue="{Binding Path=Value, TargetNullValue={x:Null}, 
                Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" 
                          MaskType="Numeric" 
                          EditValueType="{x:Type sys:Double}"
                          AllowNullInput="True"
                          Mask="#0.0 miles"
                          VerticalAlignment="Center"/>
        </Grid>
    

    希望这会有所帮助!

    【讨论】:

    • 您是否使用最新版本的 DevEx 控件对其进行了测试?在我的情况下它不起作用:当您按下退格键或删除时,它首先显示“0.0 英里”,并且只有在您再次按下该键后才会清除。
    • 是的,这与我的行为相同。如果没有将 AllowInput 设置为 true,那么即使在额外的退格之后也无法清除 textedit。如果您不想使用事件处理程序,恐怕这是唯一的方法。见this
    • 我认为主题启动器尝试将 AllowNullInput 设置为 true。问题似乎是EditValueType="{x:Type sys:Double}" 部分。由于不可能(据我所知)在其中放置 sys:NullableDouble 之类的内容,因此使用事件似乎是唯一的选择。
    • 我没有足够的信息来知道主题启动器尝试做什么,我只是测试了提供的代码,它不允许空条目,如他所说。而且我认为问题不在于 x:Type,请看this。如果他不想要额外的退格键或使用 Devexpress 提供的快捷方式(Ctrl + D、Ctrl + 0),那么我同意事件是唯一的选择 =)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 2011-02-25
    • 2012-12-26
    • 2014-01-16
    • 2010-09-10
    • 2016-06-20
    相关资源
    最近更新 更多