I read xml to class:
public class MenuItem
{
public string Header{get;set;}
public List<MenuItem> ChildMenuItems{get;set;}
}
So I get
- Menu 1
- Menu 1.1
- Menu 1.2
- Menu 1.2.1
- Menu 1.2.2
- Menu 2
- Menu 2.1
- Menu 2.2
Then set list in MenuViewModel
MenuItems = new ObservableCollection<MenuItem>(Service.GetMenu());
And in UserControl set properites for caliburn Message.Attach and Action.TargetWithoutContext
<Setter Property="cal:Message.Attach" Value="[Event Click] = [Action MenuClick($originalsourcecontext)]" />
<Setter Property="cal:Action.TargetWithoutContext" Value="{Binding Path=DataContext, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}" />
Method "MenuClick" is sometimes called more times then expected:
If I Click Menu 1 -> MenuClick is executed 1 time
If I Click Menu 1.1 -> MenuClick is executed 2 times
If I Click Menu 1.2.1 -> MenuClick is executed 3 times
But I would like that Menu 1.1 and Menu 1.2.1 events are called only once.
Any idea?