2011-04-04 18 views
8

Bir takvim denetimi ve bir düğme içeren bir TabItem var. Sorun, takvimin seçilen tarihinin daha önce seçilen tarihle aynı olması durumunda, düğmenin Tıklama etkinliğini tetiklemek için iki tıklama almasıdır.WPF düğmesi iki tıklatmayla ateşlenir Click olay

Geçerli seçili tarih önceki seçimden farklı olduğunda bu sorunu çözmek için takvimin selectedDatesChanged olayını uyguladı. kod aşağıda:

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

Ne aradığım takvimin SelectedDate önce seçilen tarihten itibaren farklılıklar bulunmadığı zaman yukarıdaki işlevinde gösterilen aynı etkiye sahip bir yoldur. GotFocus ve MouseUp olaylarını işlemeyi denedim, ancak sorunu çözmüyor.

Bu sorunun nasıl çözüleceğine dair herhangi bir fikri olan var mı? Sadece yazabilirsiniz

sayesinde Naveen

+0

olarak işaretlenmiş düğmeleri ile yardımcı olmuyor çünkü hala mükemmel değil. – naveen

+3

Sorununuz çözülürse, çözümünüzü yanıt olarak yayınlamanızı ve kabul etmenizi öneririz. Benzer sorunu olan kullanıcılar bir çözüm olarak yorumdan ziyade kabul edilmiş bir cevap görecekti. – publicgk

+0

Bu hala takvim kontrolü ile ilgili bir sorundur. Her zaman odak noktasını verdiğinizde, yanıt almak için iki kez diğer kontrollere tıklamanız gerekir. İyi bir çözümü olan var mı? – MikeKulls

cevap

12

Bu sorunu çözecek Web'de bulunan en iyi cevap oldu. ben takvimin PreviewMouseUp olayını işleyerek sorunu çözüldü isDefault veya 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); 
    } 
} 
+0

Orijinal kaynak burada görünüyor: http://social.msdn.microsoft.com/Forums/vstudio/en-US/b4413872-59d0-4a06-9d20-8d21de126dc6/calendar-not-losing-focus-wpf-40 ? forumu = wpf – SepehrM

6

:

Mouse.Capture(null); 

Bu fare tutan odak

İlgili konular