我在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
方法,一个&#39; sub&#39; MenuItems
,以及文本块中显示的Name
。
在我尝试让Click
工作之前,一切正常。由于点击事件是在模板创建的MenuItem
上触发的,因此我无法访问该模板以将我的Caliburn操作与cal:Message.Attach="Click()"
绑定。
我尝试使用ItemContainerStyle中的setter添加动作。
它似乎有效,但是我在多个地方点击了点击事件:
例如,如果我点击&#34;测试2&#34;:
&#34;测试2&#34;上的点击事件模型和&#34;数据管理器&#34;模特被解雇了。
答案 0 :(得分:0)
鼠标点击是冒泡的事件。在菜单和树视图等分层控件中,子项是父项的可视子项,因此冒泡事件将追逐树,直到它到达根项。你需要设置e.Handled = true来阻止它冒泡。