当TextBox变空时,UpdateSourceTrigger无法正常工作

时间:2013-02-13 09:21:21

标签: c# wpf

我有以下XAML -

<TextBox Text="{Binding Path=NumberOfItems, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" />
<Button Command="{Binding Path=StartCommand}">Start</Button>

在ViewModel中 -

public string this[string columnName]
    {
        get
        {
            string result = null;
            switch (columnName)
            {
                 case "NumberOfItems":
                    if (this.NumberOfItems <= 0)
                    {
                        result = "Items required";
                    }
                    break;
            }

            return result;
        }
    }

每当TextBox更改值时,触发器都会相应地工作。但在以下情况下,它不起作用 -

  1. 用户在选择文本框全文后按键盘上的删除按钮。

  2. 当用户删除TextBox中的最后一个字符时。

  3. 然而ValidatesOnDataError正在运行。

    当TextBox清空时,如何使其工作?

    当用户输入任何无效数据时,TextBox样式会发生变化。我希望通过单击“开始”按钮来了解这一点。

    如何知道TextBox包含无效数据的“开始”按钮?

2 个答案:

答案 0 :(得分:4)

我猜您正在尝试将类型为integer的属性绑定到文本框的text属性。由于整数不能为null,因此在这种情况下空字符串将不起作用。您可以使用可以为空的整数,也可以创建自己的转换器来处理空字符串。

答案 1 :(得分:1)

  

当用户输入任何无效数据时,TextBox样式会发生变化。我希望通过单击“开始”按钮来了解这一点。

     

如何知道TextBox包含无效数据的“开始”按钮?

将验证码更改为:

 case "NumberOfItems":
                if (this.NumberOfItems==null || this.NumberOfItems <= 0)
                {
                    result = "Items required";
                }
                break;

您可以在string.IsNullOrEmpty(this["NumberOfItems"])

CanExceuteStartCommand内查看StartCommand