Так же, как предложение для всех, кто сталкивался с этой проблемой (без необходимости выполнять XAML), я сделал следующее, используя Linq (VB 2008):
Private Sub BindMyCombo()
Dim yesNo As String() = {"No", "Yes"} 'Or false, true or nay, yay -whatever
Dim bits = From bit In yesNo _
Select New With { _
.BitVal = Cbool(Array.IndexOf(yesNo, bit)), _
.BitText = bit _
}
With Me.myBitComboBox
'Clear anything in the combo first if necessary...
.DataSource = Nothing
.Items.Clear()
'New binding in case there are more "bits" to be used elsewhere in your form
.BindingContext = New BindingContext
.DataSource = bits.ToList
.DisplayMember = "BitText"
.ValueMember = "BitVal"
End With
End Sub
После этого нужно просто выполнить связывание с набором данных. Когда вы это сделаете, укажите это, когда значение бита равно нулю, чтобы задать для выбранной комбинации selectedValue пустое значение или ничего, например ...
With Me.myBitComboBox
.DataBindings.Clear()
.DataBindings.Add(New Binding("SelectedValue", myDataSetName, "myBitFieldName", _
True, DataSourceUpdateMode.OnPropertyChanged, Nothing))
.SelectedValue = IIf(mdDataSetName.myBitFieldName.ToString = "", "", _
myDataSetName.myBitFieldName)
End With
Надеюсь, это поможет всем, кто сталкивается с этой проблемой (например, я).