OnMouseMove не запускается на холсте в WPF

Я выполнил свой собственный элемент управления диаграммой и хочу нарисовать простой крест, следующий за курсором. Диаграмма реализована как полилиния поверх холста, и я рисую две линии, меняя свои координаты в событии OnMouseMove холста.

Сюрпризом было обнаружение, что событие вызывается только каждые 10 секунд или около того, когда поток MainGUI простаивает (пользовательский интерфейс полностью реагирует, и если я приостанавливаю приложение, основной поток находится в App mainForm. ShowDialog ()) .

Есть идеи, как узнать, почему это происходит? Я получаю ту же производительность, используя OnMouseMove или PreviewOnMouseMove.

РЕДАКТИРОВАТЬ: Вот как я рисую крест (в любом случае, если я поставлю точку останова на OnMouseMove, он будет останавливаться только время от времени).

XAML:

<Border BorderThickness="1" BorderBrush="White" Grid.Column="1" Grid.Row="0" Grid.RowSpan="2" Grid.ColumnSpan="2" >
    <Canvas x:Name="DrawArea" PreviewMouseMove="DrawArea_PreviewMouseMove" />
</Border>

CS:

 public Chart()
 {
    _line = new Polyline();
    _line.Stroke = Brushes.Orange;
    _crossX = new Line();
    _crossY = new Line();
    _crossX.Stroke = Brushes.Orange;
    _crossY.Stroke = Brushes.Orange;
    _crossX.StrokeThickness = 1;
    _crossY.StrokeThickness = 1;

    InitializeComponent();

    this.DrawArea.Children.Add(_line);
    this.DrawArea.Children.Add(_crossX);
    this.DrawArea.Children.Add(_crossY);
}     

private void DrawArea_MouseMove(object sender, MouseEventArgs e)
{
    Point mousePosition = System.Windows.Input.Mouse.GetPosition(this.DrawArea);

    _crossX.X1 = 0;
    _crossX.X2 = this.DrawArea.ActualWidth;
    _crossX.Y1 = _crossX.Y2 = mousePosition.Y;

    _crossY.Y1 = 0;
    _crossY.Y2 = this.DrawArea.ActualHeight;
    _crossY.X1 = _crossY.X2 = mousePosition.X;
}
13
задан WPF-it 14 October 2011 в 10:08
поделиться