我使用 TabControl -> ScrollViewer -> Border 和 pMouseLeftButtonDown 处理程序....我的目标是实现拖动以滚动滚动查看器...我有一个自定义滚动查看器,我取消了所有 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”。这似乎有效,因为在 raiseEvent() 调用之后,方法 pMouseLeftButtonDown() 被再次调用并且这个新事件不会被阻止(handled = true)。问题是ui元素没有鼠标事件=>没有鼠标左键按下,这意味着没有选项卡选择......
问题出在哪里?
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);