2023年7月19日发(作者:)
C#WPF侧边栏导航菜单(DropdownMenu)阅读导航:⼀、先看效果⼆、本⽂背景三、代码实现四、⽂章参考五、代码下载⼀、先看效果⼆、本⽂背景YouTube Design com ⼤神处习得,菜单导航功能实现,常规的管理系统应该常⽤,左侧显⽰菜单条⽬,点击菜单,右侧切换不同的业务⽤户控件。常⽤菜单可以采⽤TreeView树形控件+特定样式实现 ,本⽂介绍的是使⽤Expander+ListView的组合形式实现的导航菜单,两种各有各的好处,本⽂不做优劣评价。三、代码实现3.1 添加Nuget库站长使⽤.Net Core 3.1创建的WPF⼯程,创建“DropDownMenu”解决⽅案后,需要添加两个Nuget库:MaterialDesignThemes和MaterialDesignColors,上图的效果是使⽤该控件库实现的,⾮常强⼤。3.2 ⼯程结构⽂件说明::只引⼊MD控件样式。MainWindow.展⽰导航菜单及控制菜单对应的⽤户控件切换。UserControlMenuItem为单个菜单⽤户控件,由 Expander+ListView的组合形式实现 。UserControlCustomers和UserControlProviders作为两个举例⽤的业务⽤户控件。ViewModel中定义的两个菜单相关的类,将菜单及业务⽤户控件关联。3.3 引⼊MD控件样式 1 Source="pack://application:,,,/;component/Themes/"/>11 Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/"/>12 Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Accent/"/>13
3.4 主窗体,整体布局,看上图加上下⾯的界⾯代码,添加界⾯左上⾓logo图标、左侧导航菜单、右侧业务控件显⽰容器等。 1
20
39 40 41
,主窗体后台代码,没啥好说的,初始化菜单绑定数据、切换菜单显⽰⽤户控件。 1 using del; 2 using ; 3 using System; 4 using c; 5 using ; 6 using ; 7 using ; 8 using s; 9 using ls;10 using ;11 using nts;12 using ;13 using ;14 using g;15 using tion;15 using tion;16 using ;17
18 namespace DropDownMenu19 {20 ///
29 var menuRegister = new List
36 var menuSchedule = new List
41 var menuReports = new List
49 var menuExpenses = new List
54 var menuFinancial = new List
58 (new UserControlMenuItem(item6, this));59 (new UserControlMenuItem(item1, this));60 (new UserControlMenuItem(item2, this));61 (new UserControlMenuItem(item3, this));62 (new UserControlMenuItem(item4, this));63 }64
65 internal void SwitchScreen(object sender)66 {67 var screen = ((UserControl)sender);68
69 if (screen != null)70 {71 ();72 (screen);73 }74 }75 }76 } 3.5 导航⼦菜单⽤户控件 1 5 xmlns:d="/expression/blend/2008" 6 xmlns:local="clr-namespace:DropDownMenu" 7 xmlns:materialDesign="/winfx/xaml/themes" 8 mc:Ignorable="d"> 9 ntalScrollBarVisibility="Disabled" SelectionChanged="ListViewMenu_SelectionChanged">14
1 using del; 2 using System; 3 using c; 4 using ; 5 using s; 6 using ls; 7 using ; 8 using nts; 9 using ;10 using ;11 using g;12 using tion;13 using ;14
15 namespace DropDownMenu16 {17 ///
27 _context = context;28
29 lity = ms == null ? sed : e;30 lity = ms == null ? e : sed;31
32 ntext = itemMenu;33 }34
35 private void ListViewMenu_SelectionChanged(object sender, SelectionChangedEventArgs e)36 {37 _Screen(((SubItem)((ListView)sender).SelectedItem).Screen);38 }39 }40 }
3.6 菜单ViewModel类 1 using ; 2 using System; 3 using c; 4 using ; 5 using ls; 6
7 namespace del 8 { 9 public class ItemMenu10 {11 public ItemMenu(string header, List
18 public string Header { get; private set; }19 public PackIconKind Icon { get; private set; }20 public List
1 using System; 2 using c; 3 using ; 4 using ls; 5
6 namespace del 7 { 8 public class SubItem 9 {10 public SubItem(string name, UserControl screen = null)11 {12 Name = name;13 Screen = screen;14 }15 public string Name { get; private set; }16 public UserControl Screen { get; private set; }17 }18 }
3.7 两个举例⽤的⽤户控件 1 5 xmlns:d="/expression/blend/2008" 6 xmlns:local="clr-namespace:DropDownMenu" 7 mc:Ignorable="d" 8 d:DesignHeight="450" d:DesignWidth="800"> 9
1 5 xmlns:d="/expression/blend/2008" 6 xmlns:local="clr-namespace:DropDownMenu" 7 mc:Ignorable="d" 8 d:DesignHeight="450" d:DesignWidth="800"> 9
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1689721279a280993.html
评论列表(0条)