我有以下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更改值时,触发器都会相应地工作。但在以下情况下,它不起作用 -
用户在选择文本框全文后按键盘上的删除按钮。
当用户删除TextBox中的最后一个字符时。
然而ValidatesOnDataError正在运行。
当TextBox清空时,如何使其工作?
当用户输入任何无效数据时,TextBox样式会发生变化。我希望通过单击“开始”按钮来了解这一点。
如何知道TextBox包含无效数据的“开始”按钮?
答案 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