我有一個擴展日曆控件綁定到包含日期和狀態值的類。這個想法基本上可以區分國家假期,州假日和休息日。我使用轉換器以不同的顏色呈現這些顏色,該轉換器將當前日期與日曆控件相關聯的對象列表進行檢查,以便爲CalendarDay中的元素選擇填充顏色。這一切都完美。日曆控件,點擊更改日背景顏色
問題是,我想支持,當用戶點擊一天(在給定的模式),他們可以選擇,或取消選擇該日期作爲休息/假期。使用PreviewMouseDown我通過選擇的數據上下文(日期時間)選擇對象並更新它的狀態。這工作正常,但我無法讓日曆控件執行刷新。
日曆並未綁定到我的自定義類,我不確定CalendarDay是如何綁定的,但它似乎只有一個指向DateTime值的數據上下文。所以NotifyPropertyChanged出來了。如果我點擊一個日期並切換幾個月,那麼日期顯示如預期突出顯示,我需要的是告訴日曆重新繪製。我一直在搜索強制重繪的例子,迄今爲止還沒有任何工作。
我已經嘗試了UpdateLayout()等其他東西。我不知道這是否是一個問題,因爲我試圖從鼠標事件中重新渲染。任何想法如何重新繪製日曆控件,以便轉換器可以啓動?
好吧,我想我已經取得了一些進展,但它還不是100%。如果我添加: var test = VisualTreeHelper.GetChild(VisualTreeHelper.GetParent(e.OriginalSource as DependencyObject),1)as Rectangle; test.Fill = new SolidColorBrush(Colors.Red); ...當點擊一天的時候,我可以更改CalendarDay中的元素的填充的mousedown事件。我希望這會引起轉換器覆蓋設置的佈局。不幸的是,它似乎已經覆蓋了模板的顏色。 (那一天每個月都是紅色的。) – 2010-08-18 03:54:45