WPF效果第一百八十五篇之又玩TreeView

最近又有新的开发任务了,然后我提前瞄了一眼需要实现的效果;发现其中一个和我去年玩耍的有点类似;正好好久也没玩了,那就趁着这个机会再次学习一下b635e83700aefec122e7f69f04078bd4.png;闲话也不多扯了,上效果:

a80c69c0d3f69b7fc66dfcc2386139ff.gif

2、来看看我的实现方式:

9e35efcfb189e4fb6ab6fc960dc2315b.png

3、①是一个分组的数据模板

<HierarchicalDataTemplate x:Key="GroupDataTemplate" DataType="{x:Type Nodes:TreeModel}"ItemsSource="{Binding Children,Mode=TwoWay}"><WrapPanel Margin="8,0,0,0"><Path Data="{Binding NodeType,Converter={StaticResource NodeTypeEnumToPathConverter}}"Stretch="Uniform" Fill="White" x:Name="IcoPath"Width="{Binding NodeType,Converter={StaticResource NodeTypeEnumToPathSizeConverter}}"Height="{Binding NodeType,Converter={StaticResource NodeTypeEnumToPathSizeConverter}}"/><Grid><TextBlock x:Name="ShowTbk" Margin="4,0,0,0" Text="{Binding Name,Mode=TwoWay}" Foreground="White"FontSize="16"/></Grid></WrapPanel><HierarchicalDataTemplate.Triggers><MultiDataTrigger><MultiDataTrigger.Conditions><Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TreeViewItem}}}"Value="True"/></MultiDataTrigger.Conditions><Setter TargetName="IcoPath" Property="Fill" Value="#1DF340" /><Setter TargetName="ShowTbk" Property="Foreground" Value="#1DF340" /></MultiDataTrigger></HierarchicalDataTemplate.Triggers>
</HierarchicalDataTemplate>

4、②和③是另一个数据模板

<HierarchicalDataTemplate x:Key="ExpanderNodeDataTemplate" DataType="{x:Type Nodes:TreeModel}"ItemsSource="{Binding Children,Mode=TwoWay}"><Expander Header="{Binding Name}" Style="{DynamicResource ExpanderStyle1}"><WrapPanel Margin="30,8,0,0" Orientation="Vertical"><TextBlock Text="{Binding Processors.Type,Mode=TwoWay}" Foreground="White" FontSize="14"/><TextBlock Margin="0,4,0,0" Text="{Binding Processors.IP,Mode=TwoWay}" Foreground="White" FontSize="14"/><TextBlock Margin="0,4,0,0" Text="{Binding Processors.ID,Mode=TwoWay}" Foreground="White" FontSize="14"/></WrapPanel></Expander>
</HierarchicalDataTemplate>

5、Expander模板自己玩吧,数据模板选择器:

public class TreeViewItemTemplateSelector: DataTemplateSelector{public override DataTemplate SelectTemplate(object item, DependencyObject container){var fe = container as FrameworkElement;var treeModel = item as TreeModel;DataTemplate dt = null;if(treeModel != null && fe != null){var nodeType = treeModel.NodeType;//组if(nodeType == NodeTypeEnum.Group){dt = fe.FindResource("GroupDataTemplate") as DataTemplate;}//节点else{dt = fe.FindResource("ExpanderNodeDataTemplate") as DataTemplate;}}return dt;}}

6、前台ItemTemplateSelector:

<Setter Property="ItemTemplateSelector"  Value="{StaticResource TreeViewItemTemplateSelector}"/>

最终简单的效果先这样吧a03cbaf6626a8fad5fd3b2089869ad10.png;以后有时间的话,可以再去摸索一下更复杂的效果a97eaa4c00c274609f1d808a89ac5888.png;编程不息、Bug不止、无Bug、无生活7bae72c49adbc6cdda4c9ae4a2c01eef.png;改bug的冷静、编码的激情、完成后的喜悦、挖坑的激动 、填坑的兴奋;这也许就是屌丝程序员的乐趣吧;今天就到这里吧;希望自己有动力一步一步坚持下去;生命不息,代码不止;大家抽空可以看看今天分享的效果,有好的意见和想法,可以在留言板随意留言;我看到后会第一时间回复大家,多谢大家的一直默默的关注和支持!如果觉得不错,那就伸出您的小手点个赞并关注一下,多谢您的支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/287048.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ArcGIS实验教程——实验二十三:专题地图制作完整实验步骤

ArcGIS实验视频教程合集:《ArcGIS实验教程从入门到精通》(附配套实验数据) 一、实验描述 专题地图是一个非常复杂的过程,地图数据的符号化与注记标注,都是地图编制准备基础的地理数据。然而,要将准备好的地图数据,通过一幅完整的地图表达出来,还有很多工作,包括布局…

IOS 封装轮播图

轮播图为一种常见的方式&#xff0c;常用于各种网站&#xff0c;或者App中&#xff0c;当然&#xff0c;作为APP的启动视图也是不错的选择。 闲时封装了一个&#xff0c;仅供新手参考。 1.新建工程&#xff0c;建立轮播图类 建立一个空的工程&#xff0c;新建一个类&#xff0c…

分布式事务TCC补偿机制

文章目录 概述工作流程优缺点优点&#xff1a;缺点&#xff1a; 总结Java 示例代码 概述 TCC&#xff08;Try-Confirm-Cancel&#xff09;补偿机制是一种事务处理模式&#xff0c;用于确保分布式系统中的操作成功完成或在失败时进行补偿。TCC将一个事务拆分为三个阶段&#xf…

oracle的本地安装和PUTTY+XMING远程连接安装和oracle翻页功能

因为我也是一个初学者&#xff0c;所以可能有出错的地方&#xff0c;如果有希望大家告诉我QQ:7343696.大家公共学习&#xff0c;进步。Oracle的安装实验的环境是vmware server 1.06 rehl 5.2最小安装。oracle安装的要求。1建议的内存1G&#xff08;10g&#xff09; 9i中是51…

Flutter之导url_launcher包提示 A dependency may only have one source.

1、问题 flutter项目在pubspec.yaml导入url_launcher包&#xff0c;然后点击Pub get错误提示如下 F:\flutter_sdk\flutter\bin\flutter.bat --no-color pub get Running "flutter pub get" in flutter_1... Error on line 25, column 5 of …

这是我第一次使用代码创建出一个窗口【python 游戏实战 01】

前言 本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新&#xff0c;包括别的语言以及实战都将使用对话的方式进行教学&#xff0c;基础编程语言教学适用于零基础小白&#xff0c;之后实战课程也将会逐步更新…

如何html中添加动态图片,把动态图片添加到视频画面中 视频添加自定义动态图片 视频加动态logo...

我前面也编写过关于视频添加动态图片的教程。前面所说的给是视频添加的动态图片是软件中自带的素材&#xff0c;虽然软件中带的动态图片种类繁多&#xff0c;但是不外乎有些时候软件中并没有我们要用的动态图片&#xff0c;这个时候我们就需要重外部添加啦&#xff0c;好多的软…

ASP.NET Core 集成AAD认证在Docker中运行时要注意的一个问题

最近我在准备一个分享&#xff0c;就是基于.NET 6.0的云原生开发Microsoft 365应用&#xff0c;这个看起来很高大上的东东&#xff0c;其实我理解主要就是能把应用容器化&#xff0c;便于与环境无关地进行分发和部署。如果理解有误&#xff0c;请大家纠正我。下面是其中的一个例…

QCon上海2015精彩回顾和总结

金秋十月&#xff0c;历时三天的QCon上海2015于10月17日顺利闭幕。本次大会邀请了100多位技术专家&#xff0c;为参会者奉上了100多场精彩的技术演讲。\\本次QCon邀请了极客邦创始人兼CEO霍泰稳&#xff0c;携程旅行网CTO、高级技术副总裁叶亚明&#xff0c;丁香园技术VP、EGO上…

ArcGIS中合并(merge)、联合(union)、追加(append)、融合(dissolve)的用法区别与联系

ArcGIS中,针对矢量数据拼接,有多个工具:合并(merge)、联合(union)、追加(append)、融合(dissolve)等,本文以甘肃省1:100万县级数据详细讲解以上各个工具的用法、区别和注意事项。 有关合并(merge)、联合(union)、追加(append)、融合(dissolve)等基础操作内…

Singleton

问题&#xff1a;编写一个Singleton类 简单的方式 1 package cn.changb.singleton;2 3 /**4 * 简单的方式:弊端是在并发执行时&#xff0c;14行处可能存在多个实例5 */6 public class SingletonDemo1 {7 private static SingletonDemo1 INSTANCE;8 9 private Singlet…

Flutter之运行提示Could not update files on device: Connection closed before full header was received

1 问题 运行flutter app提示错误如下 Performing hot restart... Syncing files to device MIX 3... Could not update files on device: HttpException: Connection closed before full header was received, uri http://127.0.0.1:65054/-tzvW6oGieQ/ Restarted applicati…

C++ 语法都不会怎么写代码? 03

作者简介 作者名&#xff1a;1_bit 简介&#xff1a;CSDN博客专家&#xff0c;2020年博客之星TOP5&#xff0c;蓝桥签约作者。15-16年曾在网上直播&#xff0c;带领一批程序小白走上程序员之路。欢迎各位小白加我咨询我相关信息&#xff0c;迷茫的你会找到答案。系列教程将会…

自定义dialog弹窗html,自定义H5页面dialog弹窗

弹窗一&#xff1a;样式如下&#xff1a;HTML代码&#xff1a;//弹出窗通知取消确认//遮罩层$(.dialog .content).text(text);$(.dialog, .mark).removeClass(hide);}tipDialog("1111");$(".sure").click(function(){var type $(this).attr(type);if(typeb…

【三维激光扫描】第二章:国内外三维激光扫描设备简介

地面三维激光扫描仪是地面激光扫描系统中最主要的硬件设备,近年来得到了快速发展,主要体现在品牌数量、性能指标、类型等方面的变化。本章主要介绍国内外主要设备的基本情况,对国内外研究现状进行分析,最后指出目前存在的问题与未来的发展趋势。 2.1 国外地面三维激光扫描仪…

Winform定时启动

System.Timers.Timer t;int sum 0;int qian;int bai;int shi;int ge;public 测试定时启动(){InitializeComponent();}//1.使用System.Timers.Timer//2.threadThread th;//定义线程private void 测试定时启动_Load(object sender, EventArgs e){textBox1.Text "00.00&quo…

聊一聊容器暂停退出

1背景介绍 最近在写 docker 相关教程&#xff0c;过程中发现容器暂停退出竟然有 docker kill、docker stop 和 docker pause 三种方式&#xff0c;今天就来分析下三者间的区别。2辅助指令 docker top - 查看容器进程docker event - 查看容器相关事件docker stats -…

初学者必看的文章:在VM12中安装 RedHat RHEL7.2  系统的详细步骤:看我如何操纵RHEL系统...

一、开始安装 1&#xff09;新建虚拟机 RHEL7.2 2&#xff09;成功引导系统--开机出现此画面 Install Red Hat EnterpriseLinux 7.2 安装RHLE7.2 操作系统 Test this edia & install RedHat Enterpris…

Flutter之点击按钮打开百度链接

1 需求 点击按钮&#xff0c;打开百度链接 2 代码实现 import package:flutter/material.dart; import package:url_launcher/url_launcher.dart;void main() {runApp(MyApp1()); }class MyApp1 extends StatelessWidget {overrideWidget build(BuildContext context) {return…

用计算机算出你喜欢吃你喜欢的人,Go for it七年级下学期1-12单元(期末复习)句子翻译专练...

Go for it七年级下学期1-12单元(期末复习)句子翻译专练Unit11.你的笔友是哪里人?Where is your _________ _______ _________? ( pe n , pal , from )2.他是澳大利亚人.He is ________ _________. (is, from, Australian)3.他住在哪里?Where __________ he________. (does ,…