WPF效果第一百八十八篇之再玩Expander

大端午节的在屋里吹着空调撸着代码真是酸爽47e62f025cc04d4e461cd765ba8e1c5c.png;闲话也不多扯,直接看今天要分享的效果:

25ba8e17eef07dfbe26d07a895a2d044.gif

1、关于简单的布局设计:

473e41847db5b8bb3c4702a67bc7d750.png

2、前台先来个死布局,回头ListBox改模板:

<Expander ExpandDirection="Left" Header="控制卡" VerticalAlignment="Bottom" HorizontalAlignment="Right" Style="{StaticResource LeftExpanderStyle}"><StackPanel Orientation="Horizontal" VerticalAlignment="Bottom" HorizontalAlignment="Stretch"><Expander Header="信号分配卡" Style="{StaticResource ExpanderStyle}"><ListBox Style="{StaticResource FristListListBox}" ItemsSource="{Binding OneDataContext}" /></Expander><Expander Header="信号分配卡" Style="{StaticResource ExpanderStyle}"><ListBox Style="{StaticResource FristListListBox}" ItemsSource="{Binding TwoDataContext}" /></Expander><Expander Header="信号分配卡" Style="{StaticResource ExpanderStyle}"><ListBox Style="{StaticResource FristListListBox}" ItemsSource="{Binding ThreeDataContext}" /></Expander></StackPanel>
</Expander>

3、Expander的模板:

<Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type Expander}"><Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="3" SnapsToDevicePixels="True"><Grid><Grid.ColumnDefinitions><ColumnDefinition /><ColumnDefinition Width="Auto" /></Grid.ColumnDefinitions><ContentPresenter x:Name="ExpandSite" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" Focusable="False" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="{TemplateBinding Padding}" Visibility="Collapsed" /><ToggleButton Grid.Column="1" x:Name="HeaderSite" ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" DockPanel.Dock="Top" Foreground="{TemplateBinding Foreground}" FontWeight="{TemplateBinding FontWeight}" FontStyle="{TemplateBinding FontStyle}" FontStretch="{TemplateBinding FontStretch}" FontSize="{TemplateBinding FontSize}" FontFamily="{TemplateBinding FontFamily}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsChecked="{Binding IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Margin="1" MinWidth="0" MinHeight="0" Padding="{TemplateBinding Padding}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" FocusVisualStyle="{x:Null}" VerticalAlignment="Bottom" HorizontalAlignment="Left" Height="40" /></Grid></Border></ControlTemplate></Setter.Value>
</Setter>

4、Expander的Left属性触发器:

<Trigger Property="ExpandDirection" Value="Left"><Setter Property="Style" TargetName="HeaderSite"><Setter.Value><Style TargetType="{x:Type ToggleButton}"><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type ToggleButton}"><Border Padding="{TemplateBinding Padding}"><Grid Background="Transparent" SnapsToDevicePixels="False"><Border BorderBrush="#282BFF" BorderThickness="1" Padding="0"><WrapPanel VerticalAlignment="Center"><Path x:Name="arrow" Data="M0,0L8.5539884,0 17.246985,10.709991 17.32099,10.799011 17.359992,10.752991 21.637002,16.022003 17.359992,21.291992 8.6659879,32 0.11099243,32 9.9780006,19.847992 13.043004,16.069 12.970006,15.977997 9.8639869,12.153992z" SnapsToDevicePixels="False" Stroke="Transparent" StrokeThickness="0" Fill="White" Stretch="Uniform" Width="20" Height="20" /><CheckBox Margin="10,0,0,0" Content="{TemplateBinding Content}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" ContentStringFormat="{TemplateBinding ContentStringFormat}" Foreground="{TemplateBinding Foreground}" FontSize="{TemplateBinding FontSize}" HorizontalAlignment="Center" VerticalAlignment="Center" /></WrapPanel></Border></Grid></Border><ControlTemplate.Triggers><Trigger Property="IsChecked" Value="True"><Setter Property="Data" TargetName="arrow" Value="M12.970992,0L21.524992,0 11.658996,12.152008 8.5930022,15.931 8.6660002,16.020996 11.772003,19.846008 21.636,32 13.082,32 4.3889922,21.290009 4.3150023,21.200989 4.2769927,21.247009 0,15.977997 4.2769927,10.708008z" /></Trigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter></Style></Setter.Value></Setter>
</Trigger>

5、ListBox的ItemsPanel:

<ItemsPanelTemplate x:Key="FristItemsPanelTemplate"><VirtualizingStackPanel VerticalAlignment="Bottom" />
</ItemsPanelTemplate>

6、关于ListBoxItem的Template:

<Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type ListBoxItem}"><StackPanel Background="Transparent"><Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="4" Height="60" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true"><TextBlock Text="{Binding}" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="White" FontSize="24" /></Border><Path Data="M13.002003,0L25.984006,13.004019 24.565005,14.420021 13.823991,3.6604153 13.823991,31.999021 11.818991,31.999021 11.818991,4.0220598 1.4180002,14.441021 0,13.025019z" Margin="0,10,0,0" Stretch="Fill" Fill="#FFFFFFFF" Width="26" Height="40" /></StackPanel></ControlTemplate></Setter.Value>
</Setter>

7、最后预告下一篇的效果:

6876cefcdb23f78ff1bff598ea865729.gif

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

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

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

相关文章

Android之实现长按Webview页面文字自定义复制、全选、分享、搜索、翻译功能(支持多语言,博文也有Demo下载地址)

1 需求和效果爆照 浏览器app封装了Webview,然后实现实现长按Webview页面文字自定义复制、全选、分享、搜索、翻译功能(支持多语言),都在自己的浏览器app里面进行搜索和翻译,不跳到系统浏览器里面去 效果爆照如下,oppo手机效果如下 华为手机效果如下 2 Demo下载地址 De…

中国西北地区专题地图合集(高清)

1. 西北地区概况图 2. 西北地区植被类型分布图 3. NDVI变化趋势图 4. 气候与NDVI的相关性

Apache、tomcat、Nginx常用配置合集

配置文件地址&#xff1a; Apache&#xff1a; /etc/httpd/conf/httpd.conf tomcat&#xff1a; /usr/local/tomcat/conf/server.xml Nginx &#xff1a; /usr/local/nginx/conf/nginx.conf 开机启动文件&#xff1a;/etc/rc.d/rc.local 启动方式&#xff1a; Apache&#xff…

使用putty连接linux

使用putty连接linux 快照的使用 &#xff0c;做快照相当于做备份&#xff0c;比如配置好IP&#xff0c;快照一下&#xff0c;下次就可以在回到这里&#xff01; putty下载 最好去官网下载 下载putty.zip如图所示 如何使用putty 如图设置好IP然后 save 保存 如…

【WEB API项目实战干货系列】- API访问客户端(WebApiClient适用于MVC/WebForms/WinForm)(四)

目前最新的代码已经通过Sqlite NHibernate Autofac满足了我们基本的Demo需求. 按照既定的要求&#xff0c;我们的API会提供给众多的客户端使用, 这些客户端可以是各种Web站点, APP, 或者是WinForm, WPF, Silverlight等诸如此类的应用&#xff0c;将来还有可能是各种Iot等物联…

基于 Roslyn 实现代码动态编译

基于 Roslyn 实现代码动态编译Intro之前做的一个数据库小工具可以支持根据 Model 代码文件生成创建表的 sql 语句&#xff0c;原来是基于 CodeDom 实现的&#xff0c;后来改成使用基于 Roslyn 去做了。实现的原理在于编译选择的Model 文件生成一个程序集&#xff0c;再从这个程…

【GIS风暴】GIS拓扑关系原理详解

目 录 1. 拓扑关系的概念2. 拓扑元素3. 拓扑关系4. 拓扑关系的意义5. 拓扑在ArcGIS中实现1. 拓扑关系的概念 地图上的拓扑关系是指图形在保持连续状态下的变形(缩放、旋转和拉伸等),但图形关系不变的性质。 2. 拓扑元素 对二维而言,矢量数据可抽象为点(节点)、线(链、…

Android之简单的文件夹选择器实现

1、效果爆照 2、代码实现 前提需要保证app有读写权限 activity_select_folder.xml文件如下 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layo…

【iVX 初级工程师培训教程 10篇文拿证】04 画布及我和 iVX 合照

目录 【iVX 初级工程师培训教程 10篇文拿证】01 了解 iVX 完成新年贺卡 【iVX 初级工程师培训教程 10篇文拿证】02 数值绑定及自适应网站制作 【iVX 初级工程师培训教程 10篇文拿证】03 事件及猜数字小游戏 【iVX 初级工程师培训教程 10篇文拿证】04 画布及我和 iVX 合照 【iV…

360极速浏览器使用postman

步骤如下&#xff1a;1、将crx文件打包成zip文件2、解压打包的zip文件&#xff0c;并将_metadata文件夹修改为metadata3、打开360浏览器的扩展4、360浏览器加载postman插件5、创建快捷方式6、双击快捷方式打开postman下载地址&#xff1a;http://pan.baidu.com/s/1c1ZX8XE如果网…

centos 下安装man手册

安装centos minimal版本&#xff0c;发现没有man手册 需要安装一下&#xff0c;yum install man-pages 本文转自 XDATAPLUS 51CTO博客&#xff0c;原文链接:http://blog.51cto.com/xdataplus/1796126

# javascript 总结

# javascript 总结 ## 语法1. 区分大小写2. 命名规范1. 首字母必须是 字母 _ $2. 其他字符可以是 数字 字母 下划线 $3. 避开系统的关键字4. 单词和单词连接方式推荐驼峰命名3. 注释1. 单行注释 //注释的内容2. 多行注释 /*注释内容*/4. 语句1. 要用;结尾(推荐做法)2. 如果不写…

聊聊 C++ 和 C# 中的 lambda 玩法

这几天在看 C 的 lambda 表达式&#xff0c;挺有意思&#xff0c;这个标准是在 C11标准 加进去的&#xff0c;也就是 2011 年&#xff0c;相比 C# 2007 还晚了个 4 年&#xff0c; Lambda 这东西非常好用&#xff0c;会上瘾&#xff0c;今天我们简单聊一聊。一&#xff1a;语法…

Android之网络请求通过协程+okhttp的没有做网络异常处理导致程序奔溃问题

1 问题 app里面的网络请求是通过协程+okhttp来实现的,但是没有做网络异常处理(域名无法解析、502错误等等一系列),导致程序奔溃 2 尝试 因为app基本上做好了,外面有大几十个地方调用,然后又有不同的作用域,调用的地方太多了,一开始修改在最外出的网络请求地方直接加上…

Windows10系统重装后必不可少的优化步骤

1. 查看系统的激活状态 Win+R,打开运行,输入slmgr.vbs -xpr,回车! 可以看到,该系统没有永久激活,即将过期,过期后部分功能会不可使用,需要重新激活。 2. 彻底关掉Windows Defender 方法一: 打开“命令提示符(管理员)”,然后输入: reg add "HKEY_LOCAL_MA…

【iVX 初级工程师培训教程 10篇文拿证】03 事件及猜数字小游戏

目录 【iVX 初级工程师培训教程 10篇文拿证】01 了解 iVX 完成新年贺卡 【iVX 初级工程师培训教程 10篇文拿证】02 数值绑定及自适应网站制作 【iVX 初级工程师培训教程 10篇文拿证】03 事件及猜数字小游戏 【iVX 初级工程师培训教程 10篇文拿证】04 画布及我和 iVX 合照 【iV…

visual studio系列(vs)启动调试网站使用ip+端口局域网访问

vs系列工具创建web应用时会自动创建一些配置文件&#xff0c;本文章讲的是如何修改配置文件&#xff0c;使vs在启动运行调试情况下 使用ip端口形式在局域网访问。本文章使用的是vs2015&#xff0c;.net 4.5。步骤如下&#xff1a;1.使用vs创建好你的web应用&#xff0c;打开项目…

Android studio之编译提示Could not find :umeng-asms-v1.2.1:.

1 、问题 Could not determine the dependencies of task :app:compileDebugJavaWithJavac. > Could not resolve all task dependencies for configuration :app:debugCompileClasspath.> Could not find :umeng-asms-v1.2.1:.Required by:project :app> Could not …

1-100之间的奇数

#include "stdio.h" int main() {int i0;for(i1;i<100;i){if(i%21){printf("%d ",i);}}return 0; }转载于:https://blog.51cto.com/zhangxinbei/1718010

计算机与操作系统基础小结

计算机基础概念 1946年二月美国&#xff0c;世界上第一台电子计算机ENIAC诞生&#xff0c;似乎从这一年开始世界便逐渐变得不一样了。随着半个世纪的时间&#xff0c;计算机技术蓬勃发展&#xff0c;推动人类进入信息社会。 计算机操作界面&#xff1a; ①图形用户界面 ②命令行…