2011-12-14 25 views
2

我處於項目的後期階段,我有一個帶有(自定義.net4)日曆和(再次自定義)按鈕的屏幕。按鈕反應遲鈍.net 4日曆(bug?)

無論何時選擇一個日期,該按鈕變爲休眠狀態,它不會切換到懸停可視狀態,並且不會註冊它的第一次點擊。然而,一旦它被點擊,它就會恢復爲正常按鈕,觸發命令,切換視覺狀態等等,至少直到你再次改變了你的想法。

我最初的想法是焦點,假設有日曆和按鈕之間的重點或類似的東西,坦率地說我對WPF焦點並不太熱,但還沒有找到任何理論支持。

我已經成功與此重複它(在kaxaml測試):

<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center"> 
    <Calendar /> 
    <Button>Hello, world!</Button> 
    </StackPanel> 

,它是與WPF工具包相同(2010年2月)日曆..

編輯:我忘了提及,雖然我使用按鈕進行測試,但我還沒有發現這個不起作用的UI元素,選擇calendarDayButton甚至會使Kaxamls UI進入休眠狀態。

回答

3

Calendar控件似乎在單擊時捕獲鼠標。您可以通過釋放GotMouseCapture事件中的鼠標捕獲來擺脫此行爲。

不知道這樣做的副作用是,但代碼釋放捕獲看起來是這樣的:

private void Calendar_GotMouseCapture(object sender, MouseEventArgs e) 
{ 
    if (e.OriginalSource is CalendarItem) 
     Mouse.Capture(null); 
} 

編輯

在測試爲什麼鬆開鼠標是導致導航停止工作,並且經過一些測試發現點擊日曆上的某些項目將捕捉焦點,而其他項目則不會。竊取鼠標的項目總是有System.Windows.Controls.Primitives.CalendarIteme.OriginalSource,所以增加了一個檢查,只有釋放鼠標捕獲如果e.OriginalSource類型爲CalendarItem

+0

好找,能很好的完成了CalendarDayButtons,但日曆導航按鈕不起作用。我寫了一個MEGA hack,在釋放鼠標捕獲之前等待300毫秒,然後導航備份。會繼續尋找一個乾淨的SLN =] – 2011-12-14 14:34:12

相關問題