繁体   English   中英

WPF 文本框的值在我输入时更新

[英]WPF TextBox's value updates while I am typing

我已将 TwoWay 模式中的两个 TextBoxes 绑定到一个double? 通过DoubleConvertor的值。
并且值会在我打字时更新。
第一种情况。 如果我在第一个 TB 中键入一个 double 值,切换到第二个,然后按一个无效符号,则该值会被更新删除。 第二种情况。 如果我输入的数字太多,尾部数字将被更正为零。

public class DoubleConvertor : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value is not double doubleValue)
        {
            return DependencyProperty.UnsetValue;
        }

        return doubleValue.ToString("0.########", CultureInfo.InvariantCulture);
    }

    public object? ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value is not string stringValue)
        {
            return null;
        }
        
        var parsed = double.TryParse(stringValue, NumberStyles.Any, CultureInfo.InvariantCulture, out var doubleValue);
        return parsed ? doubleValue : null;
    }
}

我如何绑定到double? 价值:

<TextBox>
    <TextBox.Text>
        <Binding Converter="{StaticResource DoubleConvertor}"
                 Path="Value" Mode="TwoWay"
                 UpdateSourceTrigger="PropertyChanged"/>
    </TextBox.Text>
</TextBox>

如何使它在键入时不更新文本字段?
有源代码: GitHub

UpdateSourceTrigger=PropertyChanged定义绑定在属性的每次更改时更新(例如,在输入的每个字符上)。

如果您希望仅在 teyt 框失去焦点(即另一个元素被聚焦)时才进行更新,则需要设置UpdateSourceTrigger=LostFocus

您的文本框可能如下所示:

<TextBox>
    <TextBox.Text>
        <Binding Converter="{StaticResource DoubleConvertor}"
                 Path="Value" Mode="TwoWay"
                 UpdateSourceTrigger="LostFocus"/>
    </TextBox.Text>
</TextBox>     

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM