Avalonia跨平台入门第十四篇之ListBox折叠列表

在前面分享的几篇中咱已经玩耍了Popup、ListBox多选、Grid动态分、RadioButton模板、控件的拖放效果、控件的置顶和置底、控件的锁定、自定义Window样式、动画效果、Expander控件;今天趁着空闲时间接着去摸索基于ListBox的折叠列表的效果,最终实现的效果如下图:

d4684263a54b2f48711dce1cf204a934.gif

先来看看布局吧:

dd95a6b03a1053c662b77e75b01de15d.png

前台的布局代码:

3e1f83107391d209108c1819ec4a9b12.png

外面ListBox的子项模板:

<ListBox.ItemTemplate><DataTemplate><!--这里绑定ListBoxItem的IsSelected可以控制只展开一项--><!--去掉绑定的话,可以展开多项--><!--IsExpanded="{Binding $parent[ListBoxItem].IsSelected}"--><Expander Header="{Binding Name}" Cores:AttachedDependencyHelper.ExpanderHeaderImg="{Binding HeaderImg}" Foreground="White" Width="{Binding $parent[ListBox].Width}"HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"><ListBox Items="{Binding ChildData}" Width="260"ItemTemplate="{StaticResource LisBoxItemTemplate}"><ListBox.Styles><Style Selector="ListBoxItem /template/ Border#OutBorder"><Setter Property="Background" Value="#1C3466"/></Style><!--鼠标pointerover的颜色--><Style Selector="ListBoxItem:pointerover /template/ Border#OutBorder"><Setter Property="Background" Value="#cc075c9f"/></Style><!--鼠标selected的颜色--><Style Selector="ListBoxItem:selected /template/ Border#OutBorder"><Setter Property="Background" Value="#075C9F"/></Style></ListBox.Styles></ListBox></Expander></DataTemplate>
</ListBox.ItemTemplate>

里面的ListBox的子项模板:

<DataTemplate x:Key="LisBoxItemTemplate"><Grid Width="{Binding $parent[ListBox].Width}"><WrapPanel Orientation="Horizontal" Margin="30,0,0,0" VerticalAlignment="Center"><Image Source="{Binding ManagerType,Converter={StaticResource ManagerTypeEnumToImageConverter}}" Height="20" Stretch="Uniform"/><TextBlock Margin="10,0,0,0" HorizontalAlignment="Center" Text="{Binding Path=Name,StringFormat={}我是{0}}" Foreground="White"/></WrapPanel><Button Classes="RemoveItemButton" Tag="{Binding}" IsVisible="{Binding $parent[ListBoxItem].IsSelected}" CommandParameter="{Binding .}"Command="{Binding DataContext.RemoveItemCommand,RelativeSource={RelativeSource AncestorType={x:Type ListBox} AncestorLevel=2}}"/></Grid>
</DataTemplate>

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

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

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

相关文章

《HTML5触摸界面设计与开发》——1.4 神秘谷,是什么让触摸界面反应灵敏?...

本节书摘来自异步社区《HTML5触摸界面设计与开发》一书中的第1章&#xff0c;第1.4节,作者&#xff1a; 【美】Stephen Woods 更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.4 神秘谷&#xff0c;是什么让触摸界面反应灵敏&#xff1f; 我有个两岁半的儿子。他从一…

Android之获取移动网络ip

1、获取移动网络ip 2、代码 public String getLocalIpAddress() { try { for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { NetworkInterface intf = en.nextElement(); for (Enumeration<InetAddres…

GCD

使用GCD 什么是GCD Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法。该方法在Mac OS X 10.6雪豹中首次推出&#xff0c;并随后被引入到了iOS4.0中。GCD是一个替代诸如NSThread, NSOperationQueue, NSInvocationOperation等技术的很高效和强大的技术。 GCD和…

软件测试技术——系统测试

文章目录一、功能测试二、回归测试定义测试时机三、性能测试定义目标性能测试类型压力负载测试1.并发性能测试&#xff08;重点&#xff09;2. 疲劳强度测试3. 大数据量测试压力测试&负载测试四、其他非功能测试1. 安全性测试功能性测试&安全性测试2. 可靠性3. 容错性测…

nagios-3.4.3搭建

nagios转载于:https://blog.51cto.com/yujianglei/1557718

.NET Core程序瘦身器发布,压缩程序尺寸到1/3

.NET Core具有【剪裁未使用的代码】的功能&#xff0c;但是由于它是使用静态分析来实现的&#xff0c;因此它的剪裁效果并不是最优的。它有如下两个缺点&#xff1a;不支持Windows Forms和WPF&#xff0c;而对于程序剪裁功能需求最强烈的其实反而是桌面程序的开发者。无法删除运…

Android之切换账号登录依然能登录成功问题解决办法

1、问题 切换账号登录依然能登录成功 2、原因和解决办法 原因是因为我调用了第三方的sdk,里面有个生成签名文件的函数&#xff0c;写死了一个参数&#xff0c;导致每次生成签名文件内容都是一致&#xff0c;导致到服务端验证通过成功。 分析路线&#xff1a; 1、 先打印日志…

《大型网站服务器容量规划》一1.1 容量规划背景

本节书摘来异步社区《大型网站服务器容量规划》一书中的第1章&#xff0c;第1.1节&#xff0c;作者&#xff1a; 郑钢 责编&#xff1a; 张涛&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.1 容量规划背景 如今人们已经习惯从互联网上获取信息&#xf…

iptables配置详解

-A参数是将规则写到现有链规则的最后面-I 参数默认是将一条规则添加到现有规则链的最前面&#xff0c;当然也可以指定插入到第几行 行数可以用数字来指定 比如说将一条规则添加到某一条链的第三行 那么原来在第三行的规则就会降到下一行第四行。例如&#xff1a; iptables -I …

软件测试技术——单元测试和集成测试

一、单元测试 为何要进行单元测试&#xff1f; 尽早发现错误 错误发现越早&#xff0c;成本越低。发现问题比较容易修正问题更容易 1.定义 单元测试是对软件基本的组成单元进行独立的测试 2.目标 单元模块是否被正确编码。信息能否正确地流入和流出单元。在单元工作过程中…

文本框输入值文字消失常用的两种方法

1.这种相对来说较简单&#xff0c;举例子&#xff1a; <input name"textfield" type"text" value"点击添入标题" style"color: gray;" onfocus"if (value 点击添入标题){value }" onblur"if (value ){value点击添…

C语言之strstr函数类似Java字符串的contain函数

1、strstr函数介绍 找出haystack字符串在needle字符串中第一次出现的位置&#xff08;不包括needle的串结束符&#xff09;。返回该位置的指针&#xff0c;如找不到&#xff0c;返回空指针。 2、举例 3、运行结果

软件测试技术——软件测试概述

文章目录一、软件测试的定义标准定义Bug和缺陷二、软件测试与软件质量保证三、软件测试七大基本原则四、软件测试分类按测试手段按测试执行方式按测试阶段或层次按测试对象五、软件测试过程模型V模型W模型H模型X模型一、软件测试的定义 正向观点逆向观点验证软件是否能正常工作…

《编写高质量代码:改善c程序代码的125个建议》——建议14-2:在右移中合理地选择0或符号位来填充空出的位...

本节书摘来自华章计算机《编写高质量代码&#xff1a;改善c程序代码的125个建议》一书中的第2章&#xff0c;建议14-2,作者&#xff1a;马 伟 更多章节内容可以访问云栖社区“华章计算机”公众号查看。 建议14-2&#xff1a;在右移中合理地选择0或符号位来填充空出的位 在右移…

Linux-No.04 Linux 设置定时任务发送邮件功能

2019独角兽企业重金招聘Python工程师标准>>> 1、定时任务 crontab -l crontab -e /sbin/service crond start //启动服务/sbin/service crond stop //关闭服务 /sbin/service crond restart //重启服务 /sbin/service crond reload //重新载入配置 /sbin/…

WPF 基础控件之 DataGrid 样式

此群已满340500857 &#xff0c;请加新群458041663由于微信群人数太多入群请添加小编微信号yanjinhuawechat 或 W_Feng_aiQ 邀请入群需备注WPF开发者 PS&#xff1a;有更好的方式欢迎推荐。支持NugetInstall-Package WPFDevelopers.Minimal -Version 3.2.001—代码如下一、创建…

C#页面抓取信息

//根据Url地址得到网页的html源码private string GetWebContent(string Url){string strResult"";try{HttpWebRequest request (HttpWebRequest)WebRequest.Create(Url);//声明一个HttpWebRequest请求request.Timeout 30000;//设置连接超时时间request.Headers.Set…

C语言之unsigned char和uint8_t

1、问题 今天搞openssl里面的客户端和服务端生成的随机数时候&#xff0c;PC端用的uint8_t数据类型&#xff0c;我用的是unsigned char类型&#xff0c;特么这不日了狗&#xff0c;不一样&#xff0c;后来问了pc端的人&#xff0c;和到网上查了下他们的区别 2、解释 unsigned…

电子商务应用课程知识整理 第五章-搜索引擎优化(SEO)

文章目录一、认识SEOSEO概述SEO相关术语SEO黑帽SEO白帽PV&#xff08;Page View&#xff09;跳出率沙盒效应SPAM快照二、SEO常用技术1. 网页title的优化要点&#xff1a;2. 关键词的选取注意的问题&#xff1a;需要避免的问题&#xff1a;3. 元标签关键词的优化要点&#xff1a…

在 Linux 下使用 RAID(二):使用 mdadm 工具创建软件 RAID 0 (条带化)

RAID 即廉价磁盘冗余阵列&#xff0c;其高可用性和可靠性适用于大规模环境中&#xff0c;相比正常使用&#xff0c;数据更需要被保护。RAID 是一些磁盘的集合&#xff0c;是包含一个阵列的逻辑卷。驱动器可以组合起来成为一个阵列或称为&#xff08;组的&#xff09;集合。 创建…