【发布时间】:2015-03-24 13:55:23
【问题描述】:
我把 xml 读到课堂上:
public class MenuItem
{
public string Header{get;set;}
public List<MenuItem> ChildMenuItems{get;set;}
}
所以我明白了
- 菜单 1
- 菜单 1.1
- 菜单 1.2
- 菜单 1.2.1
- 菜单 1.2.2
- 菜单 2
- 菜单 2.1
- 菜单 2.2
然后在 MenuViewModel 中设置列表
MenuItems = new ObservableCollection<MenuItem>(Service.GetMenu());
并在 UserControl 中为 caliburn Message.Attach 和 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}}" />
方法“MenuClick”有时被调用的次数超出预期:
如果我单击菜单 1 -> MenuClick 执行 1 次
如果我单击 Menu 1.1 -> MenuClick 执行 2 次
如果我单击 Menu 1.2.1 -> MenuClick 执行 3 次
但我希望 Menu 1.1 和 Menu 1.2.1 事件只调用一次。
有什么想法吗?
【问题讨论】:
标签: wpf c#-4.0 menu caliburn.micro