2016-03-13 2 views
0

J'ai un problème avec MaskedTextBox qui provient de Extended Wpf Toolkit. Donc, quand je l'utilise à la place de TextBox, il y a une erreur - Exception de référence nulle. Puis j'ai cherché la raison et finalement trouvé. Quand j'utilise MaskedTextBox avec masque la propriété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}"> 

provoque Null Reference Exception parce DataContext de UserControl est null, mais je ne sais pas pourquoi, le Constructor de UserControl a quelque chose comme ceci:

editModel = new EditViewModel(); 
    DataContext = editModel; 

Et editModel est null. Mais quand je supprime la propriété Mask tout fonctionne bien. Pouvez-vous m'aider pls.

Répondre

0

Le problème est queMask propriété de MaskedTextBox est se lier à une propriété de TextTextBox. Ainsi, lorsque la page Xaml est générée, l'application essaie de lier la propriété Mask au Message, mais pour le moment, ViewModel n'est pas créé et il en résulte une 'NullReferenceException'.
La solution est que vous devez définir la propriété Mask de MaskedTextBox pas dans Xaml et après avoir déclaré votre ViewModel.
editModel = new EditViewModel(); DataContext = editModel; txtMessage.Mask = "(000)00-000-00-00";