bovender framework
C# framework that implements MVVM and more
Bovender.Mvvm.EnumProvider< T > Class Template Reference

Facilitates WPF data binding to enums by providing an enumeration of Choices, read/write access to a string representation (which may be localized in derived classes), and the type-safe enum value itself. More...

Inheritance diagram for Bovender.Mvvm.EnumProvider< T >:

Public Member Functions

 EnumProvider (T initialValue)
 
EnumViewModel< T > GetViewModel (T member)
 Returns the view model for a given member. More...
 

Protected Member Functions

virtual string GetDescription (T member)
 Returns a display string for a given enum value. More...
 
virtual string GetTooltip (T member)
 Returns a tooltip for the given enum member. More...
 

Properties

AsEnum [get, set]
 
EnumViewModel< T > SelectedItem [get, set]
 
string ToolTip [get]
 
IEnumerable< EnumViewModel< T > > Choices [get]
 Returns an array of enum view models that represent the enum members. More...
 

Events

PropertyChangedEventHandler PropertyChanged
 

Detailed Description

Facilitates WPF data binding to enums by providing an enumeration of Choices, read/write access to a string representation (which may be localized in derived classes), and the type-safe enum value itself.

When providing a public EnumProvider property, you need to wire up the PropertyChanged event:

public EnumProvider<MyType> MyProperty
{
get
{
if (_myPropertyField == null)
{
_myPropertyField = new EnumProvider<MyType>(_myModel.Property);
_myPropertyField.PropertyChanged += (sender, args) =>
{
_myModel.Property = _myPropertyField.AsEnum;
};
}
return _myPropertyField;
}
}

To bind to a ComboBox to an EnumProvider property, use:

<ComboBox
ItemsSource="{Binding MyEnumProviderProperty.Choices}"
ToolTip="{Binding MyEnumProviderProperty.ToolTip}"
SelectedItem="{Binding MyEnumProviderProperty.SelectedItem}"
/>

To make use of per-item enabled states and tool tips, it is helpful to define a generic style in a central resource dictionary:

<Style TargetType="{x:Type ComboBoxItem}">
<Setter Property="Control.ToolTip" Value="{Binding Path=ToolTip, Mode=OneWay}" />
<Setter Property="IsEnabled" Value="{Binding Path=IsEnabled, Mode=OneWay}" />
</Style>

Since generic type parameters cannot be enums, the workaround "struct, IConvertible" is used here as suggested in http://stackoverflow.com/q/79126/270712

Type Constraints
T :struct 
T :IConvertible 

Definition at line 83 of file EnumProvider.cs.

Member Function Documentation

virtual string Bovender.Mvvm.EnumProvider< T >.GetDescription ( member)
inlineprotectedvirtual

Returns a display string for a given enum value.

In the base class, this is the description attribute, if present. Derived classes may override this to return localized strings.

Parameters
forValueEnum value for which to return a display string.
Returns
Display string

See http://stackoverflow.com/a/1799401/270712 for description of attribute accession.

Definition at line 176 of file EnumProvider.cs.

virtual string Bovender.Mvvm.EnumProvider< T >.GetTooltip ( member)
inlineprotectedvirtual

Returns a tooltip for the given enum member.

Derived classes may override this method to return localized tooltips.

Parameters
memberEnum member for which to return a tooltip.
Returns
Tooltip string (may be localized in derived classes).

Definition at line 201 of file EnumProvider.cs.

EnumViewModel<T> Bovender.Mvvm.EnumProvider< T >.GetViewModel ( member)
inline

Returns the view model for a given member.

The view model may be used to enable/disable the member, or set a different description or tooltip.

Parameters
memberMember whose view model to return.
Returns
Instance of EnumViewModel

Definition at line 226 of file EnumProvider.cs.

Property Documentation

IEnumerable<EnumViewModel<T> > Bovender.Mvvm.EnumProvider< T >.Choices
get

Returns an array of enum view models that represent the enum members.

Definition at line 130 of file EnumProvider.cs.


The documentation for this class was generated from the following file: