MaskedTextBox扩展Wpf工具包

时间:2016-03-13 21:34:33

标签: nullreferenceexception mask maskedtextbox

我遇到来自Extended Wpf Toolkit的MaskedTextBox问题。因此,当我使用它而不是TextBox时,会出现错误 - Null Reference Exception。然后我搜索了原因并最终找到了它。当我使用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,因为DataContext的{​​{1}}为UserControl,但我不知道为什么null ConstructorUserControl像这样的东西:

  editModel = new EditViewModel();
  DataContext = editModel;

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

1 个答案:

答案 0 :(得分:0)

问题Mask MaskedTextBox的属性绑定到Text属性TextBox。因此,当Xaml页面生成时,app会尝试将Mask属性绑定到Message,但此时ViewModel未创建,因此会发生'NullReferenceException'。
解决方案是您必须将Mask MaskedTextBox属性设置为不在Xaml中,并在声明ViewModel之后。
editModel = new EditViewModel(); DataContext = editModel; txtMessage.Mask = "(000)00-000-00-00";