private void Scroll_ValueChanged(object sender, RoutedPropertyChangedEventArgs <double> e)
        {
            if (ignoreRightScroll || ignoreLeftScroll)
            {
                return;
            }

            ignoreLeftScroll = ignoreRightScroll = true;
            LeftSV.ScrollToVerticalOffset(e.NewValue);
            RightSV.ScrollToVerticalOffset(e.NewValue);
        }
        private void LV_ScrollChanged(object sender, ScrollChangedEventArgs e)
        {
            if (LeftSV == null)
            {
                LeftSV = (VisualTreeHelper.GetChild(lvLeft, 0) as Decorator).Child as ScrollViewer;
            }
            if (RightSV == null)
            {
                RightSV = (VisualTreeHelper.GetChild(lvRight, 0) as Decorator).Child as ScrollViewer;
            }

            if (sender == lvLeft)
            {
                if (ignoreLeftScroll)
                {
                    ignoreLeftScroll = false;
                }
                else
                {
                    ignoreRightScroll = true;
                    RightSV.ScrollToVerticalOffset(e.VerticalOffset);
                    sbScroll.Maximum = e.ExtentHeight - e.ViewportHeight;
                    sbScroll.Value   = e.VerticalOffset;
                }
            }
            else if (sender == lvRight)
            {
                if (ignoreRightScroll)
                {
                    ignoreRightScroll = false;
                }
                else
                {
                    ignoreLeftScroll = true;
                    LeftSV.ScrollToVerticalOffset(e.VerticalOffset);
                    sbScroll.Maximum = e.ExtentHeight - e.ViewportHeight;
                    sbScroll.Value   = e.VerticalOffset;
                }
            }
        }
 private void Scroll_Scrolled(object sender, System.Windows.Controls.Primitives.ScrollEventArgs e)
 {
     ignoreLeftScroll = ignoreRightScroll = true;
     LeftSV.ScrollToVerticalOffset(e.NewValue);
     RightSV.ScrollToVerticalOffset(e.NewValue);
 }