【问题标题】:Treeview ContextMenu with no Click Event Handler in WPFWPF 中没有 Click 事件处理程序的 Treeview ContextMenu
【发布时间】:2012-10-24 15:55:02
【问题描述】:

我有一个 TreeView,我希望能够将子级添加到它以及它绑定到的 Linq to SQL 数据库中。

我能想到的最好方法(在我的脑海中)是让用户右键单击父节点并选择从上下文菜单中添加新项目。

我添加了一个上下文菜单,但是当我尝试在后端对其进行编程时,它说没有与之关联的事件处理程序。

        <TreeView Name="TreeView1" Margin="3" ItemsSource="{Binding ElementName=ManufacturerWarranty, Path=ManufacturerQuery, UpdateSourceTrigger=PropertyChanged}">
            <TreeView.ItemTemplate>
                <HierarchicalDataTemplate ItemsSource="{Binding Path=WarrantyList}">
                    <TextBlock Name="txtManufacturerName" Text="{Binding Path=ManufacturerName}">
                        <TextBlock.ContextMenu>
                            <ContextMenu>
                                <MenuItem Name="mnuAddRecord" Header="Add Year Record"></MenuItem>
                            </ContextMenu>
                        </TextBlock.ContextMenu>
                    </TextBlock>
                    <HierarchicalDataTemplate.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Path=Years}">
                                <TextBlock.ContextMenu>
                                    <ContextMenu>
                                        <MenuItem Name="mnuDelRecord" Header="Remove Year Record"></MenuItem>
                                    </ContextMenu>
                                </TextBlock.ContextMenu>
                            </TextBlock>
                        </DataTemplate>
                    </HierarchicalDataTemplate.ItemTemplate>
                </HierarchicalDataTemplate>
            </TreeView.ItemTemplate>
        </TreeView>

这样做的正确方法是什么?

【问题讨论】:

    标签: wpf treeview contextmenu


    【解决方案1】:

    您忘记了 add handler,它将在 click of menuItem 上执行

    <ContextMenu>
      <MenuItem Name="mnuAddRecord" Header="Add Year Record" Click="HandlerInClass"/>
    </ContextMenu>
    

    【讨论】:

    • 当我第一次将上下文菜单作为树视图本身的一部分时,我能够在sub mnuAddRecord_Click(...) handles mnuAddRecord.click 后面的代码中执行处理程序。我还尝试按照您建议的方式添加处理程序,但无法获取原始节点的记录信息。我会进一步研究。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多