【问题标题】:MaskedTextBox Extended Wpf ToolkitMaskedTextBox 扩展的 Wpf 工具包
【发布时间】:2016-03-13 21:34:32
【问题描述】:

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

<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,因为UserControl的DataContext是null,但我不知道为什么,UserControl的Constructor有这样的东西:

  editModel = new EditViewModel();
  DataContext = editModel;

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

【问题讨论】:

    标签: nullreferenceexception mask maskedtextbox


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      在我的情况下,与错过的属性 ValieDataType 相关的错误,在我在 XAML 中设置此属性后一切正常。无需通过代码设置掩码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多