I've read this very related question here on SO, and it was extremely helpful because of the link in the answer. I'm just having a problem now going the extra step and making it all work with the MVVM pattern.
Let's say I have my ViewModel, and it (or even the Model) could have an enum defined:
public enum MyTypes { Type1, Type2, Type3 };
I want to databind this to a ComboBox in my GUI. According to the article, I would use an ObjectDataProvider to invoke the Enum.GetValues() method on MyTypes. So I have to pass MyTypes as a MethodParameter. But how do you pass the type? I've tried various methods, like adding the reference to the namespace in XAML:
<Window.Resources>
<ObjectDataProvider MethodName="GetValues" ObjectType="{x:Type sys:Enum}" x:Key="TipHandlingValues">
<ObjectDataProvider.MethodParameters>
<!-- what goes here? it's totally wrong. -->
<my:MyTypes />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Window.Resources>
Pretty much nothing I put there will even compile. Does anyone know how to get past this little hurdle?
Simplest way is to add this line in code:
DataContext = Enum.GetValues(typeof(MyTypes));
Other options is to add markup extension that produce list of values out of enum.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With