大家好,感谢邀请,今天来为大家分享一下外链分享网站源码分享的问题,以及和外链生成网站的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
阅读导航
本文背景代码实现本文参考源码
1.本文背景
WPF中垂直导航菜单大家应该都常用,本文介绍使用MVVM的方式怎么绑定菜单,真的很简单。
2.代码实现
使用.NetCore3.1创建名为“MenuMVVM”的WPF模板项目,添加两个Nuget库:MaterialDesignThemes和MaterialDesignColors。
解决方案目录结构(这次失误,未截图,网站可以查看):
2.1引入MD控件样式
文件【App.xaml】,在StartupUri中设置启动的视图【Views/MainView.xaml】,并在【Application.Resources】节点增加MD控件4个样式文件
<Applicationx:Class=&34;\nxmlns=&34;\nxmlns:x=&34;\nStartupUri=&34;>\n<Application.Resources>\n<ResourceDictionary>\n<ResourceDictionary.MergedDictionaries>\n<ResourceDictionarySource=&34;/>\n<ResourceDictionarySource=&34;/>\n<ResourceDictionarySource=&34;/>\n<ResourceDictionarySource=&34;/>\n</ResourceDictionary.MergedDictionaries>\n</ResourceDictionary>\n</Application.Resources>\n</Application>\n
2.2Models
两个简单的菜单实体类:
2.2.1菜单新文件信息
文件【ItemCount.cs】,定义菜单项右侧的新文件显示个数及显示背景色:
usingSystem.Windows.Media;\n\nnamespaceMenuMVVM.Models\n{\npublicclassItemCount\n{\npublicBrushColor{get;privateset;}\npublicintValue{get;privateset;}\n\npublicItemCount(Brushcolor,intvalue)\n{\nColor=color;\nValue=value;\n}\n}\n}
2.2.2菜单项信息
文件【MenuItem.cs】,定义菜单项展示的名称、图片、新文件信息:
usingMaterialDesignThemes.Wpf;\nusingSystem;\n\nnamespaceMenuMVVM.Models\n{\npublicclassMenuItem\n{\npublicStringName{get;privateset;}\npublicPackIconKindIcon{get;privateset;}\npublicItemCountCount{get;privateset;}\n\npublicMenuItem(Stringname,PackIconKindicon,ItemCountcount)\n{\nName=name;\nIcon=icon;\nCount=count;\n}\n}\n}
其中菜单项图标使用MD控件自带的字体图标库,通过枚举【PackIconKind】可以很方便的使用,该库提供的字体图标非常丰富,目前有4836个(枚举值有7883个),下面是最后几个:
//\n//摘要:\n//ListofavailableiconsforusewithMaterialDesignThemes.Wpf.PackIcon.\n//\n//言论:\n//AlliconssourcedfromMaterialDesignIconsFont-https://materialdesignicons.com/\n//-inaccordanceofhttps://github.com/Templarian/MaterialDesign/blob/master/license.txt.\npublicenumPackIconKind\n{\n.\n.\n.\nZodiacPisces=4832,\nHoroscopePisces=4832,\nZodiacSagittarius=4833,\nHoroscopeSagittarius=4833,\nZodiacScorpio=4834,\nHoroscopeScorpio=4834,\nZodiacTaurus=4835,\nHoroscopeTaurus=4835,\nZodiacVirgo=4836,\nHoroscopeVirgo=4836\n}
2.3ViewModels
文件【MainViewModel.cs】,只定义了简单的几个属性:窗体展示Logo、菜单绑定列表。属性定义比较简单,因为视图MainView.xaml展示内容不多:
usingMaterialDesignThemes.Wpf;\nusingMenuMVVM.Models;\nusingSystem.Collections.Generic;\nusingSystem.Windows.Media;\n\nnamespaceMenuMVVM.ViewModels\n{\npublicclassMainViewModel\n{\npublicstringLogo{get;set;}\npublicList<MenuItem>LeftMenus{get;set;}\npublicMainViewModel()\n{\nLogo=&34;;\n\nLeftMenus=newList<MenuItem>();\nLeftMenus.Add(newMenuItem(&34;,PackIconKind.Image,newItemCount(Brushes.Black,2)));\nLeftMenus.Add(newMenuItem(&34;,PackIconKind.Music,newItemCount(Brushes.DarkBlue,4)));\nLeftMenus.Add(newMenuItem(&34;,PackIconKind.Video,newItemCount(Brushes.DarkGreen,7)));\nLeftMenus.Add(newMenuItem(&34;,PackIconKind.Folder,newItemCount(Brushes.DarkOrange,9)));\n}\n}\n}
2.4Views
文件【MainView.xaml】作为唯一的视图,只有31行布局代码,显示了一个Logo、菜单列表:
<Windowx:Class=&34;\nxmlns=&34;\nxmlns:materialDesign=&34;\nxmlns:d=&34;\nxmlns:x=&34;\nxmlns:mc=&34;\nmc:Ignorable=&34;\nTitle=&34;Height=&34;Width=&34;Background=&FF36235F&34;Window_MouseLeftButtonDown&34;None&34;NoResize&34;CenterScreen&34;200&34;Left&34;34;>\n<GridHeight=&34;Background=&34;>\n<ImageSource=&34;/>\n</Grid>\n<ListViewItemsSource=&34;>\n<ListView.ItemTemplate>\n<DataTemplate>\n<StackPanelOrientation=&34;Height=&34;>\n<materialDesign:PackIconKind=&34;Width=&34;Height=&34;VerticalAlignment=&34;/>\n<TextBlockText=&34;Margin=&34;FontSize=&34;VerticalAlignment=&34;/>\n<GridVerticalAlignment=&34;>\n<RectangleWidth=&34;Height=&34;RadiusY=&34;RadiusX=&34;Fill=&34;Stroke=&34;StrokeThickness=&34;/>\n<TextBlockText=&34;HorizontalAlignment=&34;VerticalAlignment=&34;FontSize=&34;/>\n</Grid>\n</StackPanel>\n</DataTemplate>\n</ListView.ItemTemplate>\n</ListView>\n</StackPanel>\n</Grid>\n</Window>
文件【MainView.xaml.cs】作为视图【MainView.xaml】的后台,绑定ViewModel,并实现鼠标左键拖动窗体功能:
usingMenuMVVM.ViewModels;\nusingSystem.Windows;\n\nnamespaceMenuMVVM.Views\n{\n///<summary>\n///演示主窗体,只用于简单的绑定ListView控件\n///</summary>\npublicpartialclassMainView:Window\n{\npublicMainView()\n{\nthis.DataContext=newMainViewModel();\nInitializeComponent();\n}\n\nprivatevoidWindow_MouseLeftButtonDown(objectsender,System.Windows.Input.MouseButtonEventArgse)\n{\nDragMove();\n}\n}\n}
3.本文参考
视频一:C#WPFDesignUI:NavigationDrawerModelViewViewMode,配套源码:MenuMVVM。
4.源码
文中代码已经全部给出,图片使用站长网站外链,可直接Copy代码,按解决方案目录组织代码文件即可运行,另附原作者视频及源码,见【3.本文参考】。
除非注明,文章均由Dotnet9整理发布,欢迎转载。转载请注明本文地址:https://dotnet9.com/7339.html
好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!
