Vb.net 数据绑定文本框未使用源更新
我有一个实现InotifyProperty的自定义类,更改如下(删除了无关和重复的属性): 正在正确序列化/反序列化该类。加载XML文件时,显示工资的文本框不会更新以反映工资值 我将(Devexpress)文本框数据绑定设置为:Vb.net 数据绑定文本框未使用源更新,vb.net,data-binding,Vb.net,Data Binding,我有一个实现InotifyProperty的自定义类,更改如下(删除了无关和重复的属性): 正在正确序列化/反序列化该类。加载XML文件时,显示工资的文本框不会更新以反映工资值 我将(Devexpress)文本框数据绑定设置为: txtWages.DataBindings.Add(New Binding("EditValue", mymap, "Wages", False, DataSourceUpdateMode.OnPropertyChanged)) 加载文件时,我可以从Debug.Pri
txtWages.DataBindings.Add(New Binding("EditValue", mymap, "Wages", False, DataSourceUpdateMode.OnPropertyChanged))
加载文件时,我可以从Debug.Print中看到新旧值:
引发的事件:0 13
但是,TXT工资保持为0
我读了这些答案,并试图寻找想法,但我的想法
EDIT:似乎如果我用反序列化的XML填充类,然后设置绑定,它就会工作,但在首先设置绑定时不会工作。我原以为这两种方法都能奏效。你的代码有错误
PropertyChangedEventArgs需要字符串(属性名称)
所以“工资”
你有代码错误吗
PropertyChangedEventArgs需要字符串(属性名称)
所以“工资”
PropertyChangedEventArgs
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(Nameof(Wages))
Map
的新实例,并将其设置为mymap
。其中控件的绑定仍将引用原始实例并侦听其事件Map
的“包装器”视图模型,并在加载文件时引发属性更改事件
Public Class ViewModel
Private _Map As Map
Property Map As Map
Get
Return _Map
End Get
Set(value As Map)
_Map = value
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(Nameof(Wages))
End Set
End Property
End Class
然后在形式上做绑定
Dim viewmodel = new ViewModel()
viewmodel.Map = DeserializeMap() ' Your deserialize logic
txtWages.DataBindings.Add("EditValue",
viewmodel,
"Map.Wages",
False,
DataSourceUpdateMode.OnPropertyChanged)
PropertyChangedEventArgs
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(Nameof(Wages))
Map
的新实例,并将其设置为mymap
。其中控件的绑定仍将引用原始实例并侦听其事件Map
的“包装器”视图模型,并在加载文件时引发属性更改事件
Public Class ViewModel
Private _Map As Map
Property Map As Map
Get
Return _Map
End Get
Set(value As Map)
_Map = value
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(Nameof(Wages))
End Set
End Property
End Class
然后在形式上做绑定
Dim viewmodel = new ViewModel()
viewmodel.Map = DeserializeMap() ' Your deserialize logic
txtWages.DataBindings.Add("EditValue",
viewmodel,
"Map.Wages",
False,
DataSourceUpdateMode.OnPropertyChanged)
我自己也注意到了。即使传递属性名而不是属性值,它也不会更新,除非我在类填充后设置绑定。因此,使用映射对象的属性集,当你填充新对象时,你可以轻松地重新绑定表单控件。我也注意到了这一点。即使传递属性名而不是属性值,它也不会更新,除非我在填充类后设置绑定。因此,使用映射对象的属性集,并且在填充新对象时,可以轻松地重新绑定表单控件
MyMap
,然后再声明new
sub。要反序列化的代码是:MyMap=BM.Utilities.FileHelper.Deserialize(Of Map)(“Routes.xml”)
这肯定是同一个实例吗?反序列化将创建Map
MyMap
类型的新实例,然后在new
sub之前声明。要反序列化的代码是:MyMap=BM.Utilities.FileHelper.Deserialize(Of Map)(“Routes.xml”)
肯定是同一个实例吗?反序列化将创建类型为Map
的新实例。