WPF侧边菜单栏实现
使用了page加载页面,而不是tabcontrol的形式,因为本质上导航页只能显示一种页面,tab简单,有现成的meterial design模板可以套用,但为了闲着没事追求高品质,尝试了page加载。当然也非常不成熟。
学习了油管的视频,视频出处:油管视频
1:0.9999复刻效果如下:
WPF侧边栏学习效果
过程中出现的问题:
- 在使用代码段propdp设置完用户自定义控件a的DependencyProperty,并在主窗口添加用户自定义控件a时出现错误:
错误 XDG0003 默认值类型与属性“Navlink”类型不匹配。
解决方法:将public static readonly DependencyProperty NavlinkProperty =
DependencyProperty.Register(“Navlink”, typeof(Uri), typeof(NavButton), new PropertyMetadata(0));
中的PropertyMetadata改为null而不是0。修改后如下:
public static readonly DependencyProperty NavlinkProperty =
DependencyProperty.Register(“Navlink”, typeof(Uri), typeof(NavButton), new PropertyMetadata(null)); - 修改1问题无报错后,图标又显示不出来,原因:使用了meterial design的主题,在app.xaml文件中删除或注释这两句
<!--<materialDesign:CustomColorTheme BaseTheme="Light" PrimaryColor="FloralWhite" SecondaryColor="DarkBlue"/>-->
<!--<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" />-->
不同的地方:
- Icon图标的表达,因为是用阿里的矢量图标库,教程中又是使用Geometry path类型的方式表示图标。因为又借鉴了这位博主的方法Svg 图标转换成Wpf path Geometry