2013-10-22 92 views
0

我已经从文本框中派生出来并引入了带有日历和时间选择器的弹出窗口,这导致了一个完美工作的日期时间选择器。现在,我有一个要求,如果我们需要在日期时间选择器中显示无效文本(日期时间除外),那么我们应该只能在加载时执行此操作,例如,如果数据库中有无效的内容,我们应该能够显示它。WPF Databound文本框显示无效数据,但不接受无效数据

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

我们该如何实现这一点,因为我已经将文本框的文本属性绑定到视图模型的属性。另外我将处理textchanged事件。一旦数据

另外我也可以,取消操作。

我想过使用一个标志,但是使用OK/Cancel会让我陷入困境,设置/重新设置标志!

或者将绑定模式帮助吗?

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

回答

1

你可以改变你的Binding.UpdateSourceTrigger价值LostFocus,使您的数据绑定文本属性将只能看到变化的时候,用户点击OKButton。您应该能够以这种方式来“拒绝”该财产的价值来电:

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; 
    } 
} 

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

+0

我会试试这个,并让你张贴!谢谢你的帮助 ! – Sandepku