2016-03-13 3 views
0

У меня проблема с MaskedTextBox, которая поставляется с Extended Wpf Toolkit. Поэтому, когда я использую его вместо TextBox, появляется ошибка - Null Reference Exception. Затем я искал причину и, наконец, нашел ее. Когда я использую MaskedTextBox с маской собственностиMaskedTextBox Extended Wpf Toolkit

<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 из UserControl является null, но я не знаю, почему, в Constructor из UserControl есть что-то вроде этого:

editModel = new EditViewModel(); 
    DataContext = editModel; 

И editModel есть null. Но когда я удаляю Mask, все работает отлично. Можете ли вы мне помочь?

ответ

0

Проблема в том, чтоMask Свойство MaskedTextBox является привязка к Text собственности TextBox. Поэтому, когда генерируется страница Xaml, приложение пытается привязать свойство Mask к Message, но в этот момент ViewModel не создается, и поэтому возникает «NullReferenceException».
Решение заключается в том, что вы должны установить Mask объект MaskedTextBox не в Xaml, а после объявления вашего ViewModel.
editModel = new EditViewModel(); DataContext = editModel; txtMessage.Mask = "(000)00-000-00-00";

 Смежные вопросы

  • Нет связанных вопросов^_^