【发布时间】:2018-03-28 21:16:27
【问题描述】:
我在 WPF 中有一个菜单,我正在尝试使用绑定和 HierarchicalDataTemplate 动态构建它:
<Menu ItemsSource="{Binding MenuItems}">
<Menu.ItemContainerStyle>
<Style>
<Setter Property="cal:Message.Attach" Value="Click()" />
</Style>
</Menu.ItemContainerStyle>
<Menu.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding MenuItems}">
<TextBlock Text="{Binding Name}" cal:Message.Attach="Click()" Background="Transparent"/>
</HierarchicalDataTemplate>
</Menu.ItemTemplate>
</Menu>
IMenuItem 有一个Click 方法、一个'sub'MenuItems 的集合,以及一个显示在文本块中的Name。
在我尝试让Click 工作之前一切正常。由于点击事件是在模板创建的MenuItem 上触发的,因此我无法访问它来将我的 Caliburn 操作与cal:Message.Attach="Click()" 绑定。
我尝试通过在 ItemContainerStyle 中使用 setter 来添加操作。
它似乎有效,但是我在多个地方触发了点击事件:
例如,如果我点击“测试 2”:
“测试 2”模型和“数据管理器”模型上的点击事件都会被触发。
【问题讨论】:
标签: wpf caliburn.micro