在TextBox失去焦点后没有调用Setter

时间:2014-11-23 21:19:54

标签: c# wpf xaml mvvm

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

在viewmodel中:

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}" />

当我开始键入内容时会调用用户名setter方法,然后将其删除并将焦点移动到其他位置。 Datacontext已正确设置并正常工作。

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

2)用户将焦点移至表格

上的下一个项目

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

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

1 个答案:

答案 0 :(得分:0)

如果打算立即触发验证状态(这是我从你的#34中获得的;无论如何都需要调用setter&#34;),那么为什么不在...处使用Loaded事件Window级别并指定String.Empty,以便无论如何触发验证代码?

甚至更好,使用IDataErrorInfogetter调用期间执行验证,这意味着第一次TextBox加载,IDataErrorInfo接口将被调用,属性验证