Exemple #1
0
        private void MultilinePanelContent_OnSizeChanged(object sender, SizeChangedEventArgs e)
        {
            const double decreaseMultiplyer = 0.95;
            const double increaseMultiplyer = 1.05;

            var decreaseOffset = ActualFontSize * 1.0;
            var increaseOffset = ActualFontSize * 2.2;

            if (_lastContainerAdded)
            {
                if (MultilinePanelContent.ActualHeight > ScrollViewerContent.ActualHeight - decreaseOffset)
                {
                    if (ActualFontSize > MinFontSize)
                    {
                        ActualFontSize *= decreaseMultiplyer;
                        UpdateFontSize();
                    }
                    else
                    {
                        ScrollViewerContent.ScrollToVerticalOffset(100000);
                    }
                }
            }
            else
            {
                if (MultilinePanelContent.ActualHeight < ScrollViewerContent.ActualHeight - increaseOffset)
                {
                    if (ActualFontSize < MaxFontSize)
                    {
                        ActualFontSize *= increaseMultiplyer;
                        UpdateFontSize();
                    }
                }
            }
        }
Exemple #2
0
        private void ScrollViewerContent_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
        {
            // simply disable the WHOLE preview -> mosue wheel handling, as the WpfControls get disturbed
            e.Handled = true;

            // scroll ourselves
            ScrollViewerContent.ScrollToVerticalOffset(ScrollViewerContent.VerticalOffset - e.Delta);

#if SAMPLE_CODE_EVENT_RAISE
            // simply disable mouse scroll for ScrollViewer, as it conflicts with the plots
            e.Handled = true;

            // if in inner loop, discard
            if (scrollInEventRaising)
            {
                return;
            }

            if (StackPanelCharts.Children != null)
            {
                foreach (var uc in StackPanelCharts.Children)
                {
                    if (uc is ScottPlot.WpfPlot wpfPlot)
                    {
                        if (wpfPlot.IsMouseOver)
                        {
                            continue;
                        }

                        // wpfPlot.RaiseEvent(new RoutedEventArgs(UIElement.PreviewMouseWheelEvent, sender));
                        var eventArg = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta);
                        eventArg.RoutedEvent = UIElement.MouseWheelEvent;
                        eventArg.Source      = uc;
                        // this seems to raise consecutive events .. somehow??
                        wpfPlot.RaiseEvent(eventArg);
                    }
                }
            }
#endif
        }