【问题标题】:Overriding Calendar Style in DatePicker在 DatePicker 中覆盖日历样式
【发布时间】:2012-05-04 14:42:03
【问题描述】:

所以我不久前编写了这段代码,它曾经可以正常工作,但最近由于某种原因,现在它根本无法正常工作。这是 xaml...

<DatePicker SelectedDate="{Binding Criteria}" IsEnabled="{Binding IsEnabled}" Width="130" HorizontalAlignment="Right">
    <DatePicker.CommandBindings>
        <CommandBinding Command="controls:DateCommands.SelectToday" CanExecute="CommandBinding_CanExecute" Executed="CommandBinding_Executed"/>
    </DatePicker.CommandBindings>
    <DatePicker.CalendarStyle>
        <Style TargetType="{x:Type Calendar}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Calendar}">
                        <TabControl>
                            <TabItem Header="Calender">
                                <CalendarItem Background="{TemplateBinding Control.Background}" BorderBrush="{TemplateBinding Control.BorderBrush}" BorderThickness="{TemplateBinding Control.BorderThickness}" Style="{TemplateBinding Calendar.CalendarItemStyle}" />
                            </TabItem>
                            <TabItem Header="Relative Time">
                                <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition/>
                                        <ColumnDefinition/>
                                    </Grid.ColumnDefinitions>
                                    <Button Grid.Column="0" Command="controls:DateCommands.SelectToday" CommandParameter="Today" Content="Today" />
                                    <Button Grid.Column="1" Command="controls:DateCommands.SelectToday" CommandParameter="Yesterday" Content="Yesterday" />
                                </Grid>
                            </TabItem>
                        </TabControl>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </DatePicker.CalendarStyle>
</DatePicker>

基本上,我将覆盖日期选择器的日历并放入一个选项卡控件,允许用户选择相对时间宏而不是实际时间(导致生成的查询始终使用该相对时间)。这曾经可以正常工作,但现在每当我尝试从日历中进行选择时,什么都不会发生,并且不会在框或支持属性中填充任何值。

我把代码拿出来放到一个新的项目中进行实验,甚至无法让这个简单的案例工作......

<DatePicker Width="130" HorizontalAlignment="Right">
    <DatePicker.CalendarStyle>
        <Style TargetType="{x:Type Calendar}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Calendar}">
                        <CalendarItem Background="{TemplateBinding Control.Background}" BorderBrush="{TemplateBinding Control.BorderBrush}" BorderThickness="{TemplateBinding Control.BorderThickness}" Style="{TemplateBinding Calendar.CalendarItemStyle}" />
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </DatePicker.CalendarStyle>
</DatePicker>

这段代码做同样的事情,当你试图从日历中选择一个日期时,什么也没有发生。这曾经有效,据我所知,没有任何改变,任何人都对正在发生的事情有任何见解,或者可能更好地实现我正在尝试做的事情?

【问题讨论】:

    标签: wpf xaml calendar datepicker


    【解决方案1】:

    我想通了。无论出于何种原因,这部分对于这一切都很重要......

    <CalendarItem x:Name="PART_CalendarItem"... />
    

    我不太清楚为什么,但我记得在某些时候删除它认为它没有做任何事情,但是没有那行,选择的日期永远不会填充文本框或支持属性。

    【讨论】:

      猜你喜欢
      • 2017-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-11
      相关资源
      最近更新 更多