[英]How do you detect an automatic Month shift on the WPF Calendar control?
我正在嘗試創建一個日歷,允許用戶單擊和切換選定的日期。 因此,他們單擊要包括的每個日期,然后一次選擇一個(不使用ctrl或Shift鍵)。 無論如何,要實現此目的,我將兩個Calendar放在控件的上方。 我使一個不透明並使另一個未命中測試可見:
<Calendar x:Name="_visibleCalendar" SelectionMode="MultipleRange" IsHitTestVisible="False" Margin="0,0,0,-46"/>
<Calendar x:Name="_selectableCalendar" Opacity="0.5" SelectedDatesChanged="DateClicked" VerticalAlignment="Bottom"/>
private void DateClicked(object sender, SelectionChangedEventArgs e)
{
DateTime? date = _selectableCalendar.SelectedDate;
_selectableCalendar.SelectedDate = null;
if (date != null)
{
if (_visibleCalendar.SelectedDates.Contains((DateTime) date))
{
_visibleCalendar.SelectedDates.Remove((DateTime) date);
}
else
{
_visibleCalendar.SelectedDates.Add((DateTime) date);
}
}
}
這樣做是允許用戶單擊_selectableCalendar
並將其選擇添加到_visibleCalendar.SelectedDates
。
如果我自己說的話,Kinda很酷。 除用戶更改不可見日歷上的月份外,它的工作原理非常好。
因此,我需要知道的是如何檢測日歷已更改為顯示不同的月份?
我嘗試使用DisplayDateStart
和DisplayDateEnd
,但是它們始終為null。
另外,(獎勵問題)是否有一種簡單的方法可以用不同的顏色突出顯示日歷上的日期? 喜歡每天用交替的顏色突出顯示嗎? 紅色,藍色,紅色等。
謝謝你的幫助。
天真的方法
private void DateClicked(object sender, SelectionChangedEventArgs e)
{
var dt = selectableCalendar.SelectedDate;
if (_curr == null)
_curr = selectableCalendar.SelectedDate;
if (((DateTime)_curr).Month != ((DateTime)dt).Month)
{
_curr = dt;
// blah
}
}
DateTime? _curr;
在哪里DateTime? _curr;
DateTime? _curr;
在類范圍內聲明取決於您的要求,組合if
語句。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.