Есть ли способ предотвратить прокрутку прокрутки прокрутки ScrollViewer?Предотвращение использования ScrollViewer для события мыши.
Следующий код не является достаточным, поскольку событие должно быть обработано с помощью дочернего элемента ScrollViewer вместо:
private void ScrollViewer_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
e.Handled = true;
}
EDIT - @Anders Keller Carstensen
я использовал для создания экземпляра PlotModel объект напрямую, поэтому я не видел метод AddHandler()
. Теперь я изменил код, но сюжет не показывает ничего:
public OxyPlot.Wpf.PlotView Plot { get; set; }
public MainWindow()
{
InitializeComponent();
DataContext = this;
Plot = new OxyPlot.Wpf.PlotView();
Plot.Model = new PlotModel();
Plot.AddHandler(System.Windows.UIElement.PreviewMouseWheelEvent, new MouseWheelEventHandler(Plot_PreviewMouseWheel), true);
// Create Line series
var s1 = new LineSeries();
s1.Points.Add(new DataPoint(2, 7));
s1.Points.Add(new DataPoint(7, 9));
s1.Points.Add(new DataPoint(9, 4));
// add Series and Axis to plot model
Plot.Model.Series.Add(s1);
Plot.Model.InvalidatePlot(false);
}
private void ScrollViewer_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
e.Handled = true;
}
private void Plot_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
MessageBox.Show("Button_PreviewMouseWheel");
}
Это соответствующий XAML:
<ScrollViewer Margin="0,25,0,0" PreviewMouseWheel="ScrollViewer_PreviewMouseWheel">
<oxy:PlotView Model="{Binding Plot}" Height="2000" Margin="0,0,15,0" />
</ScrollViewer>
Я уверен, что Model="{Binding Plot}"
это неправильно, но я не то, что вместо этого писать.
Я приложил мой ответ на ваш новый вопрос в моем ответе. –