我的应用程序由GridView
内的TreeList
实现。
令我绝望的是,与广泛使用的DataGrid
相比,我发现GridView非常原始。我正在考虑这两个选项:
(1)不知何故,我用一个DataGrid(支持上下文菜单)替换了GridView。
(2)不知何故,我将Context Menu功能添加到现有的GridView。
您会推荐哪两种方法(或另一种方法?)?
非常感谢源代码。
TIA。
答案 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
和其他内容。