带有计时器的 WPF 选项卡控件

本文关键字:选项 控件 WPF 计时器 | 更新日期: 2023-09-27 18:35:41

我开发了一个WPF应用程序,该应用程序监视有关一组正在运行的进程的一些重要数据并显示它。我还有一些其他选项卡,其中包含执行其他一些功能的UserControl。进程选项卡使用调度程序计时器每 1 秒更新一次数据,计算量相对较大。我在这里要做的是仅在选择进程选项卡时触发计时器,并在选择其他选项卡时停止计时器,以便在用户不查看数据时不会不必要地进行数据计算。对于我的应用程序,中间数据值无关紧要。

我正在考虑订阅UserControlLoadedUnloaded事件,该事件分别用作启动和停止计时器的选项卡内容。有没有更好的选择?

实现此功能的最佳方法是什么?

带有计时器的 WPF 选项卡控件

TabControl有一个SelectionChanged事件。绑在那个坏男孩身上。

private void TabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        TabItem selectedTab = e.AddedItems[0] as TabItem;  // Gets selected tab
        if (selectedTab.Name == "Tab1")
        {
            // Do work Tab1
        }
        else if (selectedTab.Name == "Tab2")
        {
            // Do work Tab2
        }
    }

也许我对场景的理解不够清楚,但是使用SelectionChanged事件的选项卡并检查是否选择了适当的选项卡不是更容易吗?

可以使用 SelectionChangedEventHandler 通知应用程序有关选项卡控件中的当前视图的信息。您可以使用多线程方法来完成工作。创建多个线程以计算在选项卡控件的不同选项卡中添加的不同视图所需的计算结果输出。继续将数据存储在集合中,当用户选择选项卡以打开视图时,将计算数据传递给 UI 线程并在实时清除集合时。对其他视图执行相同的操作。