The problem has to do with the way .NET binding works... if the .NET binding formatting cannot convert the value between the two types, the value is just not copied back to the data source, so, for some reason, .NET cannot convert between the enum and the integer value of the bound property on the combo (maybe because it requires and explicit cast, I dunno). But we've noticed the same thing... if you have a strong-typed property mapped as an enum, you have to bind to a value on the combo box that is an enum (such as when you use the enum population options of the combo box). So, if you want to keep your SelectedIndex binding and use an enum, you'll need to inherit the SF DevExpress ComboEdit (or whatever control you're using) and create a custom property that returns an enum for binding. Like this:
Public Property SelectedIndexEnum() As MyEnum
Get
Return CType(Me.SelectedIndex, MyEnum)
End Get
Set(ByVal value As MyEnum)
Me.SelectedIndex = CType(value, Integer)
End Set
End Property
And you'll also need to create an event for change notification for the binding or all is for nothing
Public Event SelectedIndexEnumChanged As EventHandler
Protected Overrides Sub SelectedIndexChanged(ByVal e As EventArgs)
'-- Raise the SelectedIndexChanged event
MyBase.OnSelectedIndexChanged(e)
'-- Raise your event right after it
RaiseEvent SelectedIndexEnumChanged(Me, e)
End Sub
So, any time the selected index changes, your custom event "changes," too, so the binding can update the value.