OK, here's what I figured out so far:
1.: Yes, I do. I still don't agree with this way of doing things.
2.: What I did now, is create some arrays to fill the drop downs from in my driver class. This is not a very elegant way, as it's not self-maintaining, but it does solve my secondary problem, where I need a subset of the enum values for another example.
Using the enumeration from above, created these arrays in my class:
modes = [readModes.SH readModes.SHN];
modeStrings = ["SH" "SHN"];
And in my app, I could populate them as:
app.DropDown.Items = app.wsaInterface.modeStrings;
app.DropDown.ItemsData = app.wsaInterface.modes;
This should do, what I demand
3.: I haven't found a way to force the passing of the correct type, but I might do something along the lines of
if class(functioParam) == class(readModes.SH)
To check if the correct parameter has been passed.