WPF - 需要Tree + Grid和Context Menu的组合

时间:2014-06-26 15:51:23

标签: c# wpf datagrid wpf-controls

我的应用程序由GridView内的TreeList实现。

enter image description here

令我绝望的是,与广泛使用的DataGrid相比,我发现GridView非常原始。我正在考虑这两个选项:

(1)不知何故,我用一个DataGrid(支持上下文菜单)替换了GridView。

(2)不知何故,我将Context Menu功能添加到现有的GridView。

您会推荐哪两种方法(或另一种方法?)?

非常感谢源代码。

TIA。

1 个答案:

答案 0 :(得分:1)

基于链接代码,这是解决方案:

1 - 将ContextMenu添加为资源:

<Window.Resources>
    <ContextMenu x:Key="ItemsContextMenu" x:Shared="False">
        <MenuItem>
            <MenuItem.Header>
                <TextBlock>
                    <Run>Context Menu Action for Item</Run>
                    <Run Text="{Binding Tag.Name}"/>
                </TextBlock>
            </MenuItem.Header>
        </MenuItem>
    </ContextMenu>

    <!-- other stuff here -->

</Window.Resources>

建议您设置x:Shared="False"以防止与重用资源实例相关的绑定问题。

2 - 为您的TreeList定义ItemContainerStyle,为TreeListItem s设置ContextMenu:

<tree:TreeList ...>
    <!-- other stuff here -->

    <tree:TreeList.ItemContainerStyle>
        <Style TargetType="{x:Type tree:TreeListItem}">
            <Setter Property="ContextMenu" Value="{StaticResource ItemsContextMenu}"/>
         </Style>
    </tree:TreeList.ItemContainerStyle>
</tree:TreeList>

请注意,我在ContextMenu中使用了DataBinding,这意味着您有一个正确的DataContext。您应该可以使用Commands和其他内容。