在几毫秒WPF内更新CLR属性的绑定

时间:2017-01-10 05:21:06

标签: c# .net wpf mvvm timer

我正在开发一个WPF应用程序,其中我必须显示一个80毫秒的控件,然后隐藏。

有16个控件及其各自的ViewModel,并且在每个viewmodel中都有一个计时器(System.Timers.Timer)和CLR属性,它绑定到控件的Visibilty。

当值大于0时,计时器开始,并将CLR属性设置为Visible,并在80毫秒后触发Elapsed事件,将属性设置为Collapsed。

在下面的代码中,在400毫秒之后调用Method1()。

例如:

public class ExampleViewModel : ViewModelBase
{
    Timer timer;
    private Visibility _isVisibile = Visibility.Collapsed;
    public Visibility IsVisibile
    {
        get { return _isVisibile; }
        set { SetField(ref _isVisibile, value, () => IsVisibile); }
    }

    public ExampleViewModel()
    {
        timer = new Timer();
        timer.Interval = 80;
        timer.Elapsed += Timer_Elapsed;
    }

    private void Timer_Elapsed(object sender, ElapsedEventArgs e)
    {
        IsVisibile = Visibility.Collapsed;
        timer.Stop();            
    }

    public void Method1(int value)
    {
        if (value > 0)
        {
            IsVisibile = Visibility.Visible;
            timer.Start();
        }
    }
}

每次都会触发IsVisible的属性更改事件,但如果有超过2个控件,则不会在80毫秒内反映在UI上。

更新控件的可见性绑定需要多长时间? 如何在几毫秒内实现更新绑定,以便它可以与所有16个并行控件一起使用。

提前致谢。

0 个答案:

没有答案