我目前正在UWP中做一个项目,我有一个CommandBar,如果鼠标移动,我想从Hidden转到Compact。5秒后(如果鼠标不动),CommandBar应该再次回到Hidden。
我没有看到任何错误,但是当我移动鼠标时,CommandBar会变得疯狂,当我再次移动鼠标时,它只是从Hidden闪烁到Compact。我认为问题在于OnMouseMovement事件本身正在堆积。
这是我的鼠标移动事件代码:
public async void OnPointerMoved(object Sender, PointerRoutedEventArgs e)
{
CmdBar.ClosedDisplayMode = AppBarClosedDisplayMode.Compact;
DispatcherTimer ButtonTimer = new DispatcherTimer();
ButtonTimer.Interval = TimeSpan.FromSeconds(5);
ButtonTimer.Tick += (sender, args) =>
{
CmdBar.ClosedDisplayMode = AppBarClosedDisplayMode.Hidden;
};
ButtonTimer.Start();
}发布于 2018-05-23 08:02:36
我做了一个小测试项目来试一试,给你一个答案,这就是我所做的:
private DispatcherTimer Timer { get; set; }
public MainPage()
{
this.InitializeComponent();
CmdBar.ClosedDisplayMode = AppBarClosedDisplayMode.Hidden;
Timer = new DispatcherTimer(){Interval = TimeSpan.FromSeconds(5) };
Timer.Tick += (sender, args) => {
CmdBar.ClosedDisplayMode = AppBarClosedDisplayMode.Hidden;
Timer.Stop();
};
}
public async void OnPointerMoved(object Sender, PointerRoutedEventArgs e)
{
Timer.Stop();
CmdBar.ClosedDisplayMode = AppBarClosedDisplayMode.Compact;
Timer.Start();
}基本上,正如@Evk所说,您正在创建一个新的定时器,每次移动鼠标。因此,我为计时器声明了一个属性并停止它,然后在鼠标移动时重新启动它。
https://stackoverflow.com/questions/50482683
复制相似问题