本文共 3124 字,大约阅读时间需要 10 分钟。
最近项目中有这么个需求:
菜单栏滚动到顶部后固定在顶部,专业的名词叫吸顶。。这在移动端还是比较常见的。
看看效果:
下面直接看看代码喽,代码不多:
第一种方法思路:
写一个和菜单一模一样的菜单,放在窗口顶部隐藏,当菜单滚动到上方时,就显示出来,反之隐藏。
MainWindow1.xaml如下:
MainWindow1.cs代码:
using System.Windows;namespace wpfcore{ public partial class MainWindow1 : Window { public MainWindow1() { InitializeComponent(); } private void ScrollViewer_ScrollChanged(object sender, System.Windows.Controls.ScrollChangedEventArgs e) { if (e.VerticalOffset > banner.ActualHeight) { topMenu.Visibility = Visibility.Visible; } else { topMenu.Visibility = Visibility.Hidden; } } }}
---------------分隔线------------------
第二种方法:
在菜单 栏内添加RenderTransform。当菜单滚动到上方时,就设置TranslateTransform.YProperty 达到 同样效果
MainWindow.xaml代码如下 :
MainWindow.cs代码:
using System.Windows;using System.Windows.Media;namespace wpfcore{ public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void ScrollViewer_ScrollChanged(object sender, System.Windows.Controls.ScrollChangedEventArgs e) { menuTranslate.SetValue(TranslateTransform.YProperty, e.VerticalOffset); if (e.VerticalOffset > banner.ActualHeight) { menuTranslate.SetValue(TranslateTransform.YProperty, e.VerticalOffset-banner.ActualHeight); } else { menuTranslate.SetValue(TranslateTransform.YProperty, 0.0); } } }}
你还有更好的方法吗?
欢迎加入WPF UI交流群哦,关注本公众号后,回复加群,即可获取群二维码。
如果喜欢,点个赞呗~
转载地址:http://bqydi.baihongyu.com/