I have problems implementing a custom DependencyObject:
I need a converter which sets or unsets a enum flag in a bound property. Therefore I created a IValueConverter d
A converter is not a FrameworkElement
so it should not inherit from that class, at best use DependencyObject
.
Since the converter is not in any tree that binding will not work, you can try:
<converters:EnumerationConverter x:Key="EnumerationConverter" x:Shared="False"
Flag="{Binding}"
Flags="{Binding Path=Value, Source={x:Reference EnumerationEditor}}"/>
(However this should be placed in the Resources
of the UserControl
and referenced, otherwise the x:Reference will cause a cyclical dependency error.)
Note that the Flag
binding tries to bind to the DataContext
which might not work as the DataContext
may not be inherited for the same reasons that ElementName
and RelativeSource
will not work.
Conclusion
I decided to solve the problem using two UserControls; FlagControl and EnumerationEditorControl.
The FlagControl has two dependency properties
The EnumerationEditorControl has one dependency property:
The EnumerationEditorControl uses a DataTemplate to instantiate FlagControls. The DataTemplate binds the FlagControl.Flag property to the DataContext and the FlagControl.Value property to the EnumerationEditorControl.Value property.
This way I don't need a converter and logic is clearly separated.
Thanks for the suggestions, comments and replies!