0
我打算使用WPF日曆控件來顯示會計月/年。當我將控件的DisplayMode設置爲「Year」時,月(對於我的en-CA文化)顯示爲「Jan」,「Feb」等。我想將它們顯示爲「01」,「02」等,但無法找到一種方法來做到這一點。爲WPF日曆CalendarItems定製日期格式
我打算使用WPF日曆控件來顯示會計月/年。當我將控件的DisplayMode設置爲「Year」時,月(對於我的en-CA文化)顯示爲「Jan」,「Feb」等。我想將它們顯示爲「01」,「02」等,但無法找到一種方法來做到這一點。爲WPF日曆CalendarItems定製日期格式
從反射鏡,CalendarItem.SetYearModeMonthButtons()方法有這樣的代碼:
CalendarButton childButton = child as CalendarButton;
DateTime day = new DateTime(this.DisplayDate.Year, count + 1, 1);
childButton.DataContext = day;
childButton.SetContentInternal(DateTimeHelper.ToAbbreviatedMonthString(new DateTime?(day), DateTimeHelper.GetCulture(this)));
childButton.Visibility = Visibility.Visible;
ToAbbreviatedMonthString使用DateTimeFormatInfo.AbbreviatedMonthNames並從FrameworkElement.Language返回XmlLanguage獲取CultureInfo的,我不認爲有一種方法創建自定義XmlLanguage來僞造月份名稱。
所以你唯一的選擇似乎是更改CalendarButton的控件模板。你可以做這樣的事情:
<toolkit:Calendar DisplayMode="Year">
<toolkit:Calendar.CalendarButtonStyle>
<Style TargetType="primitives:CalendarButton">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="primitives:CalendarButton">
<primitives:CalendarButton>
<TextBlock Text="{Binding Month, StringFormat=00}"/>
</primitives:CalendarButton>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</toolkit:Calendar.CalendarButtonStyle>
</toolkit:Calendar>
這也將影響到今年的按鈕,這所有的一切都會顯示「01」(因爲它們都代表1月1日),和並不突出的當月,但它應該給你一個開始,如果你想採取這種做法。