WPF кнопка запускается двумя щелчками мыши - PullRequest
9 голосов
/ 04 апреля 2011

У меня есть TabItem, который содержит элемент управления календаря и кнопку.Проблема заключается в том, что когда выбранная дата календаря совпадает с ранее выбранной датой, кнопка запускает событие Click двумя щелчками мыши.

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

selectedDatesChanged(object sender, SelectionChangedEventArgs e)
{
    this.CaptureMouse();
    this.ReleaseMouseCapture();
}

Мне нужен способ получить тот же эффект, что и в вышеуказанной функции, когда selectedDate календаря не отличается от ранее выбранной даты.Я пытался обработать события GotFocus и MouseUp, но это не решило проблему.

У кого-нибудь есть идеи, как мне решить эту проблему?

Спасибо, Навин

Ответы [ 2 ]

14 голосов
/ 21 июня 2011

Это был лучший ответ, который я нашел в Интернете. Это все еще не идеально, потому что это не помогает с кнопками, которые помечены как IsDefault или IsCancel

protected override void OnPreviewMouseUp(MouseButtonEventArgs e)
{
  base.OnPreviewMouseUp(e);
  if (Mouse.Captured is Calendar || Mouse.Captured is System.Windows.Controls.Primitives.CalendarItem)
  {
    Mouse.Capture(null);
  }
}
6 голосов
/ 11 мая 2011

Вы можете просто написать:

Mouse.Capture(null);

Это решит проблему удержания мыши в фокусе

...