如何正确绑定TextBox Text属性的附加行为?

时间:2015-09-01 13:19:49

标签: regex wpf xaml

在研究Josh Smith撰写的经典文章Regex Validation in WPF时, 我有一个错误(VS 2010):

  

错误134必须绑定TextBox的Text属性才能使RegexValidator验证它。

抛出

  <TextBox 
  Text="{Binding Path=DateString, UpdateSourceTrigger=PropertyChanged}" 
  jas:RegexValidator.RegexText="{x:Static local:DateFormatRegex.DateRegex}" 
  jas:RegexValidator.ErrorMessage="Invalid date format." 
  />

在我看来文本被绑定。怎么了? (我不知道:()。

非常感谢任何帮助。

TIA

1 个答案:

答案 0 :(得分:1)

您看到错误,因为您尚未为XAML设计器设置设计时DataContext。

您可以在XAML中执行此操作。将其添加到UserControl / Window属性:

xmlns:local="clr-namespace:MyProjectName.ViewModels"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
d:DataContext="{d:DesignInstance Type=local:MainViewModel, IsDesignTimeCreatable=True}"

(替换您的项目名称,ViewModel名称等)

如果您的ViewModel没有无参数构造函数,您可以从视图的代码隐藏创建一个实例,例如:

public MyControl()
{
    DataContext = new MyViewModel("a parameter");
}

显然这有其局限性,因为应用程序没有执行。