2012-05-04 5 views
3

Итак, я написал этот код некоторое время назад, и он работал нормально, но недавно по какой-то причине теперь он не работает вообще. Вот XAML ...Переопределение стиля календаря в DatePicker

<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> 

Этот код делает то же самое, когда вы пытаетесь выберите дату из календаря, ничего не произойдет. Раньше это работало, и, насколько мне известно, ничего не изменилось, у кого-нибудь есть представление о том, что происходит, или, возможно, лучше реализовать то, что я пытаюсь сделать?

ответ

2

Я понял. По какой причине эта часть имеет важное значение для этого все функции ...

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

Я не совсем уверен, почему, но я помню, удалив его в какой-то момент, думая, что ничего не делает, но без этого строка, выбранная дата никогда не заполняет текстовое поле или свойство резервного копирования.

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