如何在MouseWheel事件中使用多线程?

时间:2019-06-26 06:30:34

标签: c# wpf

我有使用UIElement控件的WPF应用程序,此应用程序包含22个画布,并且这些画布是隐藏的,在每只鼠标上这些画布的轮子3都是可见的,我如何通过对每个画布使用3个线程来使画布可见/隐藏画布的类型(对于多边形,类型1:1画布;对于道路,类型2:10画布;对于节点,类型3:11画布)?

注意:每个缩放步骤(MouseWheel步骤),我都应该调用ViewPolygonLayer(),ViewSegmentsLayers()和ViewNodesLayers() 每种方法如何使用3个线程?

1 个答案:

答案 0 :(得分:0)

确定要自己手动创建和管理所有内容吗? 您可以编写可附加到这些画布的行为,在其中您可以将方法订阅控制器事件。

class CanvasBehaviour : Behavior<Canvas>
    {
        protected override void OnAttached()
        {
            base.OnAttached();
            this.AssociatedObject.IsVisibleChanged += this.MyMethods;
        }

        private void MyMethods(object sender, DependencyPropertyChangedEventArgs e)
        {
            // Do what you want
        }
    }

您需要使用using System.Windows.Interactivity;

用法:

在您的xaml中,包括

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"

并在控制器上

<Canvas>
<i:Interaction.Behaviors>
                <myBehaviours:CanvasBehaviour />
            </i:Interaction.Behaviors>
</Canvas>