MaskedTextBox 扩展 Wpf 工具包

MaskedTextBox Extended Wpf Toolkit

我对来自 Extended Wpf Toolkit 的 MaskedTextBox 有疑问。因此,当我使用它而不是 TextBox 时,会出现错误 - 空引用异常。然后我查找原因,终于找到了。当我将 MaskedTextBox 与 Mask 属性

一起使用时
<xctk:MaskedTextBox
      Name="txtMessage"
      Value="{Binding Message, UpdateSourceTrigger=PropertyChanged}"
      IncludeLiteralsInValue="False"
      Mask="(000)000-00-00"
      TextBoxBase.TextChanged="txtMessage_TextChanged" 
      ValueDataType="{x:Type s:String}">

它导致Null Reference Exception因为UserControlDataContextnull,但我不知道为什么,[=14=的Constructor ] 有这样的东西:

  editModel = new EditViewModel();
  DataContext = editModel;

editModelnull。但是当我删除 Mask 属性 时,一切正常。你能帮我吗

问题MaskedTextBoxMask 属性 绑定到 Text 属性 TextBox。因此,当 Xaml 页面生成时,应用程序尝试将 Mask 属性 绑定到 Message,但此时 ViewModel 未创建,因此出现 'NullReferenceException'.
解决方法是必须设置MaskedTextBoxMask属性不在Xaml,声明后你的ViewModel
editModel = new EditViewModel(); DataContext = editModel; txtMessage.Mask = "(000)00-000-00-00";

在我的例子中,链接到错过 属性 ValieDataType 的错误,在我在 XAML 中设置这个 属性 之后一切正常。无需通过代码设置掩码。