c# - TextBox 变空时 UpdateSourceTrigger 不起作用

标签 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 中的最后一个字符时。

但是 ValidatesOnDataError 正在工作。

当 TextBox 为空时,如何让它工作?

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

如何让开始按钮知道 TextBox 有无效数据?

最佳答案

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

关于c# - TextBox 变空时 UpdateSourceTrigger 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14850132/

相关文章:

c# - 我如何知道何时/什么正在加载某些程序集?

c# - 自适应卡片能否以模板方式用于自适应对话?

c# - 如何将字符串解析为日期时间?

c# - WPF C# : UI won't update with even thou OnPropertyChanged is triggered

c# - WPF/数据网格 : Binding to different properties for displaying and editing

c# - 为什么在 DI 中使用接口(interface)而不是抽象类?

c# - 在一次性对象上未正确调用处置

c# - WPF 浏览器调用脚本

c# - 处理 ViewModels 和 CanExecute 处理程序

c# - Wpf 中的标记列系列图表