2012-05-04 28 views
3

でカレンダーのスタイルをオーバーライドだから私はしばらく前にこのコードを書いて、それが正常に動作するために使用されるが、最近はどのような理由のために、今では全く動作しません。ここでは、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> 

を出しコードを取り、実験することも動作するように、この単純なケースを得ることができなかった新しいプロジェクトにそれをダンプカレンダーから日付を選択すると、何も起こりません。これは動作するように使用され、私の知識には何も変わっていない、誰もが何が起こっている上の任意の洞察力、または多分私がやろうとしています何のより良い実装を持っていますか?

答えて

2

私はそれを考え出しました。何らかの理由でこの部分は、すべてが機能するために、このために重要である...

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

私はなぜ非常にわからないんだけど、私はそれなしで、それは何もしていなかった思考いくつかの点で、それを削除覚えていますか行が選択された日付は、テキストボックスまたはバッキングプロパティに入力されることはありません。