Bind your ContextMenu.ItemsSource not to a MenuItem[] but a ObservableCollection < YourMenuClass >. YourMenuClass should contain the header and other parameters you want to bind to, maybe a command. Then use a template to generate your menuitems.
<ContextMenu ItemsSource="{Binding MenuItemList}">
<ContextMenu.ItemTemplate>
<DataTemplate>
<MenuItem Header="{Binding Path=Name}" Command="{Binding MyCommand}" />
</DataTemplate>
</ContextMenu.ItemTemplate>
</ContextMenu>