WPF 用Popup做下拉菜单

今天无聊时看到必应搜索首页的菜单挺好,于是想着模仿一下。。写着写着发现和我之前做的一个MenuItem很像,干脆直接拿来用了。。。

看看效果:

上图是bing.com首页右上角的下拉菜单,今天就来做了一个这样的。。

我承认我偷懒了,哈是在以前的menuitem外面套了一个popup,

下面就看看主要代码,最后附上下载链接。

新建一个DropDownMenu用户控件:

<UserControl x:Class="wpfcore.DropDownMenu"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:wpfcore"mc:Ignorable="d" x:Name="dropdownmenu"Background="Transparent"Width="40" Height="40"d:DesignHeight="32" d:DesignWidth="32"><Grid><Border x:Name="border"Background="Transparent"Margin="8"MouseUp="OnBorderMouseDown"><Viewbox><Path Fill="Red" SnapsToDevicePixels="True" Stretch="Uniform"Data="M170.666667 213.333333h682.666666v85.333334H170.666667V213.333333z m0 512h682.666666v85.333334H170.666667v-85.333334z m0-256h682.666666v85.333334H170.666667v-85.333334z"/></Viewbox></Border><Popup Placement="Bottom" PlacementTarget="{Binding ElementName=border}"AllowsTransparency="True"IsOpen="{Binding IsOpen,ElementName=dropdownmenu}"StaysOpen="False"PopupAnimation="Slide"VerticalOffset="6"><Border Margin="6"    Background="LightBlue"><Border.Effect><DropShadowEffect BlurRadius="6" ShadowDepth="0" Color="Red"/></Border.Effect><StackPanel><local:SideMenuItem DataContext="{Binding ItemViewModel,ElementName=dropdownmenu}"IsExpanded="True"MenuItemBackground="#24ACF2"MenuItemSelectedBackground="YellowGreen"ToggleBackground="#007ACC"MenuItemSelectedChanged="S"/><local:SideMenuItem DataContext="{Binding ItemViewModel,ElementName=dropdownmenu}"MenuItemBackground="#24ACF2"MenuItemSelectedBackground="YellowGreen"ToggleBackground="#007ACC"MenuItemSelectedChanged="S"/>            </StackPanel></Border></Popup></Grid>
</UserControl>

此控件后台代码:

using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;namespace wpfcore
{public partial class DropDownMenu : UserControl{public bool IsOpen{get { return (bool)GetValue(IsOpenProperty); }set { SetValue(IsOpenProperty, value); }}public static readonly DependencyProperty IsOpenProperty =DependencyProperty.Register("IsOpen", typeof(bool), typeof(DropDownMenu), new PropertyMetadata(false));public DropDownMenu(){ItemViewModel = new SideMenuItemViewModel(){HeaderText = "快速开始",IconGeometry = FindResource("IconInfo") as Geometry,Items = new List<object>(){"5.0新变化","第一个项目","第一个模块","自定义用户","捐赠","FAQ"}};InitializeComponent();}private void OnBorderMouseDown(object sender, MouseButtonEventArgs e){IsOpen = !IsOpen;}public SideMenuItemViewModel ItemViewModel { get; set; }private void S(object sender, RoutedEventArgs e){}}
}

其它代码太多了,直接上链接算了,

链接:https://pan.baidu.com/s/1Ei1BNVCrvZFfv2mQlBX-MA

提取码:bfpv

如果喜欢,点个赞呗~

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

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

相关文章

程序猿都在关注的6个优质公众号

CSDN学院▲长按图片识别二维码关注简介&#xff1a;CSDN学院&#xff0c;中国IT人必备的职业提升平台。在这里&#xff0c;看前辈文章&#xff0c;听专家分享&#xff0c;做一线项目&#xff0c;无畏场景&#xff0c;不限时间的紧跟前沿技术脚步。你的技术进阶之路&#xff0c;…

聊一聊.NET Core结合Nacos实现配置加解密

背景 当我们把应用的配置都放到配置中心后&#xff0c;很多人会想到这样一个问题&#xff0c;配置里面有敏感的信息要怎么处理呢&#xff1f;信息既然敏感的话&#xff0c;那么加个密就好了嘛&#xff0c;相信大部分人的第一感觉都是这个&#xff0c;确实这个是最简单也是最合适…

给孩子讲100个科学道理,不如带他做这些趣味实验!

▲数据汪特别推荐点击上图进入玩酷屋玩具和学习看似是两个对立的东西&#xff0c;孩子天性爱玩&#xff0c;家长却希望孩子能多学习。不一定非要啃课本才能汲取知识&#xff0c;有时候&#xff0c;在轻松有趣的游戏中也能学到课堂上学不到的知识。让学习变得有趣、高效——给孩…

linux服务器出现黄,linux服务器出现严重故障后的原因以及解决方法

linux服务器出现严重故障后的原因以及解决方法发布时间&#xff1a;2011-11-24 16:32:18 作者&#xff1a;佚名 我要评论linux服务器出现严重故障后的解决方法&#xff0c;本文为大家介绍四个步骤解决linux服务器严重故障。1、把系统安装光盘插入&#xff0c;重启机器&…

史上最污技术解读,我竟然秒懂了!

全世界只有3.14 % 的人关注了数据与算法之美或许有不少人对热备&#xff0c;冷备&#xff0c;云备了解不深。今天&#xff0c;数据汪就给大伙科普一下 IT 行业各种备份术语&#xff0c;以后别闹笑话了。1.冷备份假设你是一位女性&#xff0c;你有一位男朋友&#xff0c;于此同时…

linux免费日志分析工具,分享10个优秀的日志分析工具

原标题&#xff1a;分享10个优秀的日志分析工具在网络管理员的日常工作中&#xff0c;对日志文件的分析能够及时了解网络设备或应用的性能数据&#xff0c;以便及时发现问题并及时解决。分析日志文件的时候需要运用到日志分析工具&#xff0c;接下来小编就给大家分享10个优秀的…

BenchmarkDotNet性能测试

BenchmarkDotNet是一款开源的性能测试工具&#xff0c;使用方式非常简单&#xff0c;特别是对实现同一功能的两种方式&#xff0c;犹豫不决时&#xff0c;可以使用它进行个对比。比如我们比较ADO.NET方式查询数据库表&#xff0c;和用Dapper方式获取数据为表&#xff0c;只需要…

每日一笑 | 程序员的日常,这也太真实了......

全世界只有3.14 % 的人关注了数据与算法之美&#xff08;图片来源于网络&#xff0c;侵权删&#xff09;

【转载】分布式系统的理解

2019独角兽企业重金招聘Python工程师标准>>> 1. 如何理解“分布式”&#xff1f; 经常听到”分布式系统“&#xff0c;”分布式计算“&#xff0c;”分布式算法“。分布式的具体含义是什么&#xff1f;狭义的分布是指&#xff0c;指多台PC在地理位置上分布在不同的…

小米开招.NET,20~40k*16薪,点名要求WPF+自动化!

近期小米发布了深圳南山区的C#工程师招聘岗位&#xff0c;20~40k*14薪的待遇让人心动&#xff0c;其核心技术要求再WPF、MVVM、自动化设备、本地数据库等&#xff0c;有没有发现什么秘密&#xff1f;互联网造车&#xff01;物联网终极形态自今年3月份小米宣布要造车&#xff0c…

linux内核线程socket,从Linux源码看Socket(TCP)的accept

从Linux源码看Socket(TCP)的accept前言笔者一直以为若是能知道从应用到框架再到操做系统的每一处代码&#xff0c;是一件Exciting的事情。 今天笔者就从Linux源码的角度看下Server端的Socket在进行Accept的时候到底作了哪些事情(基于Linux 3.10内核)。html一个最简单的Server端…

豆瓣最高评分8.9!让你拥有“多样性思维”

▲数据汪特别推荐点击上图进入玩酷屋01表象与本质我们的大脑是如何工作的&#xff1f;所谓的类比到底是什么?我们是怎么在截然不同的情景间建立起联系的&#xff1f;类比在学习的过程中发挥着怎样的作用&#xff1f;人类大脑中的每个概念都源于多年来不知不觉中形成的一长串类…

复仇!3:1 KO叙利亚!.NET程序员用算法推演出国足进世界杯概率...

6月16日凌晨2点&#xff0c;国足在阿联酋沙迦体育场迎战卡塔尔世预赛亚洲区40强赛最后一个对手&#xff0c;已经锁定小组头名并出线的劲敌叙利亚队&#xff0c;上半场艾克森中框&#xff0c;武磊送助攻&#xff0c;张稀哲打破僵局&#xff0c;下半场奥斯曼扳平比分&#xff0c;…

linux终端背景透明度设置,Ubuntu Terminal标签背景颜色设置

使用ubuntu以来一直苦于terminal标签颜色差距太小&#xff0c;有时候根本不知道自己在哪个标签下&#xff0c;于是在网上搜索如何设置背景颜色可以让标签便于区分&#xff0c;现总结如下&#xff1a;1.打开gtk-widgets.cssvim /usr/share/themes/Ambiance/gtk-3.0/gtk-widgets.…

快速入门人工智能,这波福利不能错过!

不知不觉&#xff0c;寒假就这样溜走了&#xff0c;看着这个寒假养肥的膘&#xff0c;嗯~又是一个充实的假期。不少同学踏上返校之路&#xff0c;迎来新学期&#xff01;新学期&#xff0c;当然少不了小天的陪伴啦&#xff01;早春开学季&#xff0c;小天送福利&#xff0c;福利…

从代码角度揭示:华为鸿蒙的“套壳”真相!

华为鸿蒙操作系统&#xff08;HarmonyOS&#xff09;出来后&#xff0c;互联网上已经吵翻天了&#xff0c;有人认为HarmonyOS是“自主的全场景分布式系统”&#xff0c;是国产之光&#xff0c;另一派则认为HarmonyOS是“Android套壳”&#xff0c;是挂羊头卖狗肉。作为十年老程…

linux进化树分析的软件,一款好用的进化树可视化编辑软件

原标题&#xff1a;一款好用的进化树可视化编辑软件iTOL(Interactive Tree Of Life)是一个在线显示和操作的进化树工具。我们可以添加很多自定义的项目&#xff0c;丰富和完善自己的进化树&#xff0c;比如添加柱状图、蛋白结构域、heatmap、基因平行转移(horizontal gene tran…

每日一笑 | 床上还是桌上,你总得选一样~

全世界只有3.14 % 的人关注了数据与算法之美&#xff08;图片来源于网络&#xff0c;侵权删&#xff09;

Redis分布式锁抽丝剥茧

之前码甲哥写了两篇有关线程安全的文章&#xff1a;•你管这叫线程安全&#xff1f;•.NET八股文&#xff1a;线程同步技术解读分布式锁是"线程同步"的延续最近首度应用"分布式锁"&#xff0c;现在想想&#xff0c;分布式锁不是孤立的技能点&#xff0c;这…

让苹果CEO库克折服的程序员仅10岁!?

▲数据汪特别推荐点击上图进入玩酷屋在国外&#xff0c;编程教育课早已普及&#xff0c;美国、英国、新加坡等国家少儿编程已进入小学标准必修课程体系。韩国、日本也相继在2017年和2020年开展一年级至初三的编程教育普及。美国总统孙女&#xff0c;五岁开始学习在电脑上编程最…