用户输入窗口上的不需要的默认值(VB / wpf)

时间:2016-12-13 00:26:09

标签: wpf vb.net xaml

我有一个名为vehicle的类,它具有许多属性,但我只使用一个来说明问题。我的车辆类包括以下代码:`Private clsMileage As Long

Public Property Mileage As Long
    Get
        Mileage = clsMileage
    End Get
    Set(value As Long)
        clsMileage = value
    End Set
End Property

Public Sub New()
    clsMileage = vbNull
End Sub`

非常基本的东西。我的输入窗口有许多文本框,设计如下:

<Window.Resources>
    <local:VehicleExpense x:Key="ve" />
</Window.Resources>
<Grid DataContext="{StaticResource ve}">

<TextBox
      Name="txtMileage"
      Text="{Binding Path=Mileage}" />

当窗口打开时,数字0位于txtMileage文本框中。我不想要任何价值。我希望该框为空白,以便用户可以轻松输入数据。如果我从车辆类中删除Sub New,则数字1将出现在文本框中。这些数字来自哪里?

我尝试通过如下设置模式来修改绑定:     值=&#34; {绑定路径=里程,模式= OneWayToSource}&#34;

这样可以使文本框保持空白,但是当窗口打开时,文本框有一个红色边框。但是我还没有添加任何验证码,那么为什么程序认为验证失败已经提出?

1 个答案:

答案 0 :(得分:0)

对于您的第一个问题,该值来自于您绑定里程属性Long这一事实 - 这意味着它的默认值为0.

Sub New中,您要为{Long}分配vbNull; vbNull恰好是值1的常量(来自Microsoft.VisualBasic.Constants.vbNull)。这可能不是你的意思。 VB.net&#34; null&#34;值为Nothing,但也不能分配给Long类型的字段。

对于第二个问题,验证错误来自于您无法将空字符串(&#34;&#34;)分配给Long值,这会导致Binding错误。要解决此问题,您可以使您的支持字段为空:

Private clsMileage as Long?
Public Property Mileage as Long? 
etc.

更多信息:https://msdn.microsoft.com/en-us/library/ms235245.aspx