WinForms ComboBox的两种方式数据绑定,具有单独的Items和SelectedItem源

时间:2019-01-15 15:52:30

标签: vb.net data-binding combobox

我希望我的头衔有意义。我要执行以下操作:

  1. 将ComboBox项目绑定到列表
  2. 将SelectedItem绑定到一个属性(与列表分开)
  3. 一旦对象中的某些内容发生更改,则更新ComboBox的SelectedItem(例如,一旦绑定到SelectedItem的属性以编程方式更改,则ComboBox的SelectedItem也将相应更改)

我已经完成了前两件事的工作,但我陷入了第3点。数据绑定只能单向进行。意思是,当我从ComboBox中选择一个新Item时,后面代码中的对象会相应更改。但是,如果我在后面的代码中更改对象或它具有初始值,则不会更新/预先选择ComboBox的SelectedItem。

cbErledigungsArt.DataSource = _erledigungsArten.ToArray()
cbErledigungsArt.DisplayMember = "Beschreibung"
cbErledigungsArt.ValueMember = "ID"

cbErledigungsArt.DataBindings.Add("SelectedItem", _feststellung, "ErledigungsArt")

Festellung是自定义类型:

Public Class FeststellungDTO
    Public Property Jahr() As Integer
    Public Property ErledigungsArt() As ErledigungsArtDTO
End Class

Erledigungsart是绑定到ComboBox的属性

Public Class ErledigungsArtDTO
    Public Property ID() As Integer
    Public Property Beschreibung() As String
End Class

例如,我想说

Dim _feststellung As New FeststellungDTO() With {
    .Jahr = 2015,
    .ErledigungsArt = New ErledigungsArtDTO() With {.ID = 0, .Beschreibung = "Bla"}
}
Dim _erledigungsArten As New List(Of ErledigungsArtDTO)(
    {
        New ErledigungsArtDTO() With {.ID = 0, .Beschreibung = "Bla"},
        New ErledigungsArtDTO() With {.ID = 1, .Beschreibung = "Blu"}
    }
)
cbErledigungsArt.DataSource = _erledigungsArten.ToArray()
cbErledigungsArt.DisplayMember = "Beschreibung"
cbErledigungsArt.ValueMember = "ID"

cbErledigungsArt.DataBindings.Add("SelectedItem", _feststellung, "ErledigungsArt")

'SelectedItem will become "Bla"

_feststellung.ErledigungsArt = New ErledigungsArtDTO() With {.ID = 1, .Beschreibung = "Blu"}

'SelectedItem will become "Blu"

'User now selects "Bla" from the ComboBox and the value of _festellung.ErledigungsArt will change accordingly

这可能吗?

0 个答案:

没有答案