父母的约束/设置属性' HierarchicalDataTemplate中的项目

时间:2018-03-28 21:16:28

标签: wpf caliburn.micro

我在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;:

enter image description here

&#34;测试2&#34;上的点击事件模型&#34;数据管理器&#34;模特被解雇了。

1 个答案:

答案 0 :(得分:0)

鼠标点击是冒泡的事件。在菜单和树视图等分层控件中,子项是父项的可视子项,因此冒泡事件将追逐树,直到它到达根项。你需要设置e.Handled = true来阻止它冒泡。