文本框失去焦点后未调用资源库

本文关键字:调用 资源库 焦点 失去 文本 | 更新日期: 2023-09-27 18:31:32

这是我的问题,当应用程序启动时,用户选择文本框。用户无需键入任何内容即可单击选项卡以选择下一个文本框。这应该在视图模型中为第一个文本框绑定触发 setter 方法。但这似乎没有发生。

在视图中模型:

private string _username;
public string Username
{
    get { return _username; }
    set
    {
        _username = value;
        RaisePropertyChanged("Username");
        Validator.Validate(() => Username);
    }
} 

在 xaml 中:

<TextBox Text="{Binding Username, Mode=TwoWay, ValidatesOnDataErrors=True}" />

用户名设置器方法在我开始键入内容时被调用,然后擦除它并将焦点移动到其他内容。数据上下文已正确设置并正常工作。

1)用户将焦点设置为用户名文本框,不键入任何内容

2) 用户将焦点移动到表单上的下一项

结果 = 当"用户名"文本框失去焦点时,不调用视图模型中的 Setter 方法

结果我需要 = 即使用户不键入任何内容,也会调用 Setter 方法

文本框失去焦点后未调用资源库

如果目的是立即触发验证状态(这是我从您的"无论如何都需要调用 setter"中得到的),那么为什么不在 Window 级别使用 Loaded 事件并分配String.Empty以便无论如何都会触发验证代码?

或者更好的是,使用 IDataErrorInfo 它在getter调用期间执行验证,这意味着第一次加载TextBox时,将调用IDataErrorInfo接口并验证属性。