private void OnScrollChanged(object sender, ScrollChangedEventArgs e)
        {
            CharacterWidthsCanvasScroll.ScrollChanged    -= OnScrollChanged;
            IndicesToCharacterCanvasScroll.ScrollChanged -= OnScrollChanged;
            CharactersToIndexCanvasScroll.ScrollChanged  -= OnScrollChanged;

            if (!CharacterWidthsCanvasScroll.Equals(sender))
            {
                CharacterWidthsCanvasScroll.ScrollToVerticalOffset(e.VerticalOffset);
                CharacterWidthsCanvasScroll.ScrollToHorizontalOffset(e.HorizontalOffset);
            }

            if (!IndicesToCharacterCanvasScroll.Equals(sender))
            {
                IndicesToCharacterCanvasScroll.ScrollToVerticalOffset(e.VerticalOffset);
                IndicesToCharacterCanvasScroll.ScrollToHorizontalOffset(e.HorizontalOffset);
            }

            if (!CharactersToIndexCanvasScroll.Equals(sender))
            {
                CharactersToIndexCanvasScroll.ScrollToVerticalOffset(e.VerticalOffset);
                CharactersToIndexCanvasScroll.ScrollToHorizontalOffset(e.HorizontalOffset);
            }

            CharacterWidthsCanvasScroll.ScrollChanged    += OnScrollChanged;
            IndicesToCharacterCanvasScroll.ScrollChanged += OnScrollChanged;
            CharactersToIndexCanvasScroll.ScrollChanged  += OnScrollChanged;
        }
        private void OnGLControlElementMouseClick(object sender, MouseEventArgs e)
        {
            int index = ((e.Y / 24) * 21 + (e.X / 24));

            if (index < _charactersWidths.Length)
            {
                UIElement control = CharacterWidthsCanvas.Children[index * 2 + 1];
                double    kx      = Canvas.GetLeft(control) / CharacterWidthsCanvas.Width;
                double    ky      = Canvas.GetTop(control) / CharacterWidthsCanvas.Height;
                double    x       = ((CharacterWidthsCanvasScroll.ScrollableWidth + CharacterWidthsCanvasScroll.ViewportWidth) * kx) - CharacterWidthsCanvasScroll.ViewportWidth / 2;
                double    y       = ((CharacterWidthsCanvasScroll.ScrollableHeight + CharacterWidthsCanvasScroll.ViewportHeight) * ky) - CharacterWidthsCanvasScroll.ViewportHeight / 2;

                CharacterWidthsCanvasScroll.ScrollToHorizontalOffset(x);
                CharacterWidthsCanvasScroll.ScrollToVerticalOffset(y);

                CharacterWidthsCanvas.Children[index * 2 + 1].Focus();
            }
        }