我遇到来自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
Constructor
已UserControl
像这样的东西:
editModel = new EditViewModel();
DataContext = editModel;
而editModel
是null
。但是当我删除Mask
属性时,一切正常。你能帮帮我吗。
答案 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";