Я использую TabControl -> ScrollViewer -> Border с обработчиком pMouseLeftButtonDown .... Моя цель - реализовать перетаскивание в scrollviewer с прокруткой ... У меня есть пользовательский scrollviewer и я отменяю все события previewmouseleftbuttondown (обработчик на границе внутришаблон):
private void pMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (!block)
{
block = true;
lastPreviewMouseDownMouseButtonEventArgs = null;
return;
}
else
{
block = true;
}
lastPreviewMouseDownMouseButtonEventArgs = null;
mouseDragStartPoint = e.GetPosition(this);
scrollStartOffset.X = HorizontalOffset;
scrollStartOffset.Y = VerticalOffset;
e.Handled = true;
lastPreviewMouseDownMouseButtonEventArgs = e;
}
В некоторых особых случаях я хотел бы запустить «lastPreviewMouseDownMouseButtonEventArgs» вручную.Похоже, это работает, потому что после вызова метода повыситьEvent () метод pMouseLeftButtonDown () вызывается снова, и это новое событие не будет заблокировано (handled = true).Проблема в том, что элемент пользовательского интерфейса не получает никакого события мыши => нет левой кнопки мыши, что означает отсутствие выбора вкладки ...
В чем проблема?
FrameworkElement el = lastPreviewMouseDownMouseButtonEventArgs.Source as FrameworkElement;
lastPreviewMouseDownMouseButtonEventArgs.Handled = false;
Debug.WriteLine(el);
MouseButtonEventArgs newEvent = new MouseButtonEventArgs(Mouse.PrimaryDevice, Environment.TickCount, MouseButton.Left) { RoutedEvent = FrameworkElement.MouseLeftButtonDownEvent };
el.RaiseEvent(lastPreviewMouseDownMouseButtonEventArgs);