博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF自定义控件与样式(9)-树控件TreeView与菜单Menu-ContextMenu
阅读量:7092 次
发布时间:2019-06-28

本文共 2168 字,大约阅读时间需要 7 分钟。

原文:

一.前言

  申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接。

  本文主要内容

  • 菜单Menu的自定义样式;
  • 右键菜单ContextMenu的自定义样式;
  • 树控件TreeView的自定义样式,及右键菜单实现。

二.菜单Menu的自定义样式

  自定义菜单样式的效果图:

  Menu和ContextMenu样式本身很简单,他们最主要的部分就是MenuItem,MenuItem中包含的内容比较多,如图标、选中状态、二级菜单、二级菜单的指针、快捷键等。 使用了字体图标定义菜单项MenuItem样式代码:  

View Code

Menu样式:  

示例代码:  

                                                                                                                        

 

三.右键菜单ContextMenu的自定义样式

有了第二节的MenuItem样式,ContextMenu的样式很简单:  

实现一个文本操作(剪切、复制、粘贴)的样式:  

效果图:

 

四.树控件TreeView的自定义样式

4.1TreeView基本样式

TreeView的样式比较简单,相比ListBox,主要多了层级关系,节点的展开、收缩。效果图:

样式定义中默认是开启虚拟化,以支持大数据,数据不多时最好关闭。样式代码:

View Code

4.2 TreeView的右键菜单实现

  TreeView支持右键操作应该是比较常见的需求,实现很简单,效果演示:

示例代码:  

后台C#代码:  

private void TreeViewItem_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)        {            var treeViewItem = VisualUpwardSearch
(e.OriginalSource as DependencyObject) as TreeViewItem; if (treeViewItem != null) { treeViewItem.Focus(); e.Handled = true; } } static DependencyObject VisualUpwardSearch
(DependencyObject source) { while (source != null && source.GetType() != typeof(T)) source = VisualTreeHelper.GetParent(source); return source; } private void MenuItem_OnClick(object sender, RoutedEventArgs e) { var item = this.tree1.SelectedItem as NodeX; if (item != null) { MessageBoxX.Info(item.Name.ToString()); } }

 

附录:参考引用

  

版权所有,文章来源:

个人能力有限,本文内容仅供学习、探讨,欢迎指正、交流。

转载地址:http://aanql.baihongyu.com/

你可能感兴趣的文章
Python+Tkinter 密保小工具
查看>>
centos 创建swap 交换分区
查看>>
Prometheus 架构 - 每天5分钟玩转 Docker 容器技术(83)
查看>>
Live Migrate 操作 - 每天5分钟玩转 OpenStack(42)
查看>>
Oracle的奇葩设置之归档清理作业与rm -rf
查看>>
Oracle数据库服务器CPU持续100%之等待事件asynch descriptor resize
查看>>
java8中的localdate和localtime用法举例
查看>>
[20160713]修改表结构增加1列与缺省值.txt
查看>>
Nginx工作原理和优化、漏洞(转)
查看>>
8天学通MongoDB——第四天 索引操作
查看>>
让c#的exe只要被修改就无法运行,支持混淆和数字证书
查看>>
导入https证书
查看>>
手机分发真能抢媒体平台的饭吗?
查看>>
大叔也说Xamarin~Android篇~支付宝SDK的集成
查看>>
PaddlePaddle
查看>>
《数据科学R语言实践:面向计算推理与问题求解的案例研究法》一一第2章 樱花公路赛参赛选手比赛时间建模...
查看>>
MySQL 5.6 的 GTIDs : 新复制协议和中断复制的新方法 【已翻译100%】
查看>>
国际电信联盟批准首个大数据标准
查看>>
Linus 爱 GPL,但不喜欢 GPL 诉讼
查看>>
《BackTrack 5 Cookbook中文版——渗透测试实用技巧荟萃》—第3章3.1节简介
查看>>