如何为绑定到数字数据的文本框触发属性集

时间:2011-04-25 22:24:49

标签: wpf textbox properties double numeric

我刚刚注意到,当非数字事件发生时,例如字母/空格键入或文本清除时,绑定到数字数据的WPF文本框不会触发Property Set。当我尝试验证文本框是否具有有效数字时,这会成为一个问题。如果用户键入5并按退格键,则数据绑定属性保持为5,而文本框显示为空!我没办法禁用按钮来阻止进一步的进展。无论如何,在绑定到数字数据时是否启用非数字通知?或者,我被迫使用字符串属性/数据转换器?感谢。

1 个答案:

答案 0 :(得分:0)

如果您不喜欢默认转换器,则需要创建自己的转换器,如果输入为空或不可解析,则返回有效值。

public class IntBindingConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return value.ToString();
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        string input = value as string;
        if (String.IsNullOrWhiteSpace(input))
        {
            return 0;
        }
        else
        {
            int outInt;
            if (int.TryParse(input, out outInt))
            {
                return outInt;
            }
            else
            {
                return 0;
            }
        }
    }
}

使用示例:

<TextBox>
    <TextBox.Text>
        <Binding Path="Max">
            <Binding.Converter>
                <vc:IntBindingConverter/>
            </Binding.Converter>
        </Binding>
    </TextBox.Text>
</TextBox>

这可能看起来有点乱,但通常你实际上只是阻止用户继续进行。