c# - c# wpf treeviewitem with contextmenu
问题描述
我只想用普通的treeviewitem右键单击menucontext。我能找到的所有例子,它要求绑定一些东西。但我只是不想绑定任何东西。
例如:
TreeViewItem ceo = new TreeViewItem() { Header = "CEO" };
TreeViewItem manager1 = new TreeViewItem() { Header = "Manager1" };
TreeViewItem manager2 = new TreeViewItem() { Header = "Manager2" };
TreeViewItem person1 = new TreeViewItem() { Header = "person1" };
TreeViewItem person2 = new TreeViewItem() { Header = "person2" };
manager1.Items.Add(person1);
manager2.Items.Add(person2);
ceo.Items.Add(manager1);
ceo.Items.Add(manager2);
我只想制作子节点 menucontext ,可以吗?
解决方案
您必须创建一个Style
以舒适的方式完成此操作。将其Style
放入 aResourceDictionary
范围内,TreeView
以便您可以轻松找到它,或者在隐含的情况下Style
它可以自动应用。
以下隐式Style
将对ContextMenu
所有添加相同的内容TreeViewItems
:
应用程序.xaml
<Application>
<Application.Resources>
<ResourceDictionary>
<Style TargetType="TreeViewItem">
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu>
<MenuItem Header="_Bold"
IsCheckable="True"
Checked="Bold_Checked"
Unchecked="Bold_Unchecked" />
<MenuItem Header="_Italic"
IsCheckable="True"
Checked="Italic_Checked"
Unchecked="Italic_Unchecked" />
<Separator />
<MenuItem Header="Increase Font Size"
Click="IncreaseFont_Click" />
<MenuItem Header="_Decrease Font Size"
Click="DecreaseFont_Click" />
</ContextMenu>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
</Application.Resources>
</Application>
或者(但不推荐)您可以创建Style
和ContextMenu
使用 C# 并手动分配Style
给每个TreeViewItem
,或者将其添加到ResourceDictionary
例如Application.Current.Resources
. 但它比使用 XAML 更复杂且可读性更低。
推荐阅读
- omnet++ - 相扑多边形在静脉模拟中不可见
- node.js - nodejs在discord中查找对消息的所有回复
- reactjs - # 后反应本机链接号不起作用
- javascript - 当用户使用他们的 Google 帐户登录我的网站时,如何获取 authuser 号?
- apache-spark - 使用 pyspark 插入镶木地板文件时,Hive 表需要对每个新分区进行“修复”
- javascript - 在网页上显示缩略图,但通过 JavaScript 以模态显示更大的图像
- javascript - 将 C# AES 加密转换为 CryptoJS
- vb.net - 定时器上的多个条件
- postgresql - 将数据从 Citus 迁移到 RDS
- gitlab - 覆盖 gitlab 作业中定义的 CI/CD 变量