WPF数据绑定文本框显示无效数据但不接受无效数据

时间:2013-10-22 11:24:05

标签: wpf binding textbox

我来自一个文本框,并引入了一个带有日历和时间选择器的弹出窗口,这导致日期时间选择器完美运行。既然如此,我有一个要求,如果我们需要在日期时间选择器中显示无效文本(除了日期时间),我们应该能够在加载时执行它,就像数据库中出现无效的内容一样,我们应该能够显示它。

但是如果用户试图输入无效值,他应该被限制这样做。

我们如何实现相同,因为我已将文本框的text属性绑定到视图模型的属性。我还将处理textchanged事件。一旦数据

我也好,取消操作。

我想过使用一个标志,但使用OK / Cancel让我陷入两难境地,即设置/重新设置标志!

或者绑定中的模式会有帮助吗?

感谢任何帮助。提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以将Binding.UpdateSourceTrigger值更改为LostFocus,这样您的数据绑定文字属性只会在用户点击OK Button时看到更改。您应该能够以这种方式“拒绝”物业中的传入价值:

public string Text
{
    get { return text; }
    set
    {
        DateTime date;
        if (!DateTime.TryParse(value, out date)) // Use whatever condition you like
        {
            text = value;
        }
        else text = string.Empty;
    }
}

Focus丢失时,这也会清除UI控件中的无效值。但是,如果使用LostFocus不适合您,您还可以将Binding.UpdateSourceTrigger值更改为Explicit并手动调用UpdateSource方法更新Binding 。请查看MSDN上的Binding.UpdateSourceTrigger Property页面以了解更多信息。