You said you are looking for XAML-only solution, but this involves only tiny bit of code.
First, drop your ItemTemplate and use Style instead:
<ContextMenu.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Command" Value="{Binding DataContext.MyCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}"/>
<Setter Property="CommandParameter" Value="{Binding}"/>
</Style>
</ContextMenu.ItemContainerStyle>
Then add simple command in VM:
this.MyCommand = new DelegateCommand<MyEnum>(val => TimelineUnit = val);
I tested it with DevExpress DelegateCommand, but similar implementations of ICommand should work as well.