首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DispatcherTimer叠加- UWP

DispatcherTimer叠加- UWP
EN

Stack Overflow用户
提问于 2018-05-23 07:47:28
回答 1查看 192关注 0票数 2

我目前正在UWP中做一个项目,我有一个CommandBar,如果鼠标移动,我想从Hidden转到Compact。5秒后(如果鼠标不动),CommandBar应该再次回到Hidden

我没有看到任何错误,但是当我移动鼠标时,CommandBar会变得疯狂,当我再次移动鼠标时,它只是从Hidden闪烁到Compact。我认为问题在于OnMouseMovement事件本身正在堆积。

这是我的鼠标移动事件代码:

代码语言:javascript
复制
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();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-23 08:02:36

我做了一个小测试项目来试一试,给你一个答案,这就是我所做的:

代码语言:javascript
复制
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所说,您正在创建一个新的定时器,每次移动鼠标。因此,我为计时器声明了一个属性并停止它,然后在鼠标移动时重新启动它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50482683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档