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