Пользовательский формат даты для WPF Calendar CalendarItems - PullRequest
0 голосов
/ 12 июля 2010

Я планирую использовать элемент управления WPF Calendar для отображения финансового месяца / года. Когда я устанавливаю DisplayMode элемента управления на «Year», месяцы (для моей культуры en-CA) отображаются как «Jan», «Feb» и т. Д. Я хотел бы отображать их как «01», «02» и т.д., но не могу найти способ сделать это.

1 Ответ

1 голос
/ 14 июля 2010

Из Reflector метод 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, возвращенный из XmlLageFrameworkElement.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 января), и не будут выделять текущий месяц,но это должно дать вам начало, если вы хотите принять такой подход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...