2010-07-12 2 views
0

Я планирую использовать элемент управления календаря WPF для отображения финансового месяца/лет. Когда я устанавливаю DisplayMode элемента управления в «Год», месяцы (для моей культуры в CA) отображаются как «Ян», «Фев» и т. Д. Я бы хотел отображать их как «01», «02», и т. д., но не может найти способ сделать это. МетодПользовательский формат даты для календаря WPF CalendarItems

ответ

1

От отражателя, 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 и получает CultureInfo из XmlLanguage возвращенного FrameworkElement.Language, и я не думаю, что есть способ для создания пользовательского 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 января), и не выделяет текущий месяц, но должен дать вам начало, если вы хотите принять такой подход.

Смежные вопросы