0

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

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

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

4

4 回答 4

5

TabControl有一个SelectionChanged事件。绑定到那个坏男孩。

于 2013-10-17T09:36:29.057 回答
2
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
        }
    }
于 2013-10-17T10:04:18.640 回答
0

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

于 2013-10-17T11:19:21.347 回答
0

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

于 2013-10-17T09:36:07.990 回答