<!--***********************************************************************************

   Extended WPF Toolkit

   Copyright (C) 2007-2013 Xceed Software Inc.

   This program is provided to you under the terms of the Microsoft Public
   License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license 

   For more features, controls, and fast professional support,
   pick up the Plus Edition at http://xceed.com/wpf_toolkit

   Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

  **********************************************************************************-->

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
                    xmlns:local="clr-namespace:Xceed.Wpf.Toolkit"
                    xmlns:themes="clr-namespace:Xceed.Wpf.Toolkit.Themes"
                    xmlns:chrome="clr-namespace:Xceed.Wpf.Toolkit.Chromes"
                    xmlns:conv="clr-namespace:Xceed.Wpf.Toolkit.Core.Converters"
                    xmlns:sys="clr-namespace:System;assembly=mscorlib">

   <ResourceDictionary.MergedDictionaries>
      <ResourceDictionary Source="..\..\Themes\Generic\Glyphs.xaml" />
   </ResourceDictionary.MergedDictionaries>

   <conv:InverseBoolConverter x:Key="InverseBoolConverter" />
   <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />

   <DataTemplate x:Key="DefaultWatermarkTemplate">
      <ContentControl Content="{Binding}" Foreground="Gray" Focusable="False" Margin="0,0,3,0" />
   </DataTemplate>

   <LinearGradientBrush x:Key="PopupDarkBorderBrush" EndPoint="0.5,1" StartPoint="0.5,0">
      <GradientStop Color="#FFA3AEB9" Offset="0" />
      <GradientStop Color="#FF8399A9" Offset="0.375" />
      <GradientStop Color="#FF718597" Offset="0.375" />
      <GradientStop Color="#FF617584" Offset="1" />
   </LinearGradientBrush>

    <LinearGradientBrush x:Key="PopupBackgroundBrush" StartPoint="0,0" EndPoint="0,1">
      <LinearGradientBrush.GradientStops>
         <GradientStopCollection>
            <GradientStop Offset="0" Color="#FFffffff" />
            <GradientStop Offset="1" Color="#FFE8EBED" />
         </GradientStopCollection>
      </LinearGradientBrush.GradientStops>
   </LinearGradientBrush>

   <Style x:Key="DateTimePickerToggleButtonStyle" TargetType="ToggleButton">
      <Setter Property="Template">
         <Setter.Value>
            <ControlTemplate TargetType="ToggleButton">
               <Grid SnapsToDevicePixels="True">
                  <chrome:ButtonChrome x:Name="ToggleButtonChrome"
                                       CornerRadius="0,2.75,2.75,0"
                                       RenderChecked="{Binding IsOpen, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:DateTimePicker}}"
                                       RenderEnabled="{Binding IsEnabled, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:DateTimePicker}}"
											      RenderMouseOver="{TemplateBinding IsMouseOver}"
											      RenderPressed="{TemplateBinding IsPressed}">

                     <Grid>
                        <Grid.ColumnDefinitions>
                           <ColumnDefinition Width="*" />
                           <ColumnDefinition Width="Auto" />
                        </Grid.ColumnDefinitions>

                        <ContentPresenter HorizontalAlignment="Stretch" VerticalAlignment="Stretch" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />

                        <Grid x:Name="arrowGlyph" IsHitTestVisible="False" Grid.Column="1" Margin="5">
                           <Path x:Name="Arrow"
                                 Width="9"
                                 Height="5"
                                 Data="{StaticResource DownArrowGeometry}"
                                 Fill="#FF000000"
                                 Margin="0,1,0,0"/>
                        </Grid>
                     </Grid>
                  </chrome:ButtonChrome>
               </Grid>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsEnabled" Value="False">
                        <Setter Property="Fill" TargetName="Arrow" Value="#AFAFAF" />
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
         </Setter.Value>
      </Setter>
   </Style>

   <!-- =============================================================================== -->
   <!-- DateTimePicker                                                                  -->
   <!-- =============================================================================== -->

   <Style TargetType="{x:Type local:DateTimePicker}">
      <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}" />
      <Setter Property="BorderBrush" Value="{DynamicResource {x:Static themes:ResourceKeys.ControlNormalBorderKey}}" />
      <Setter Property="BorderThickness" Value="1,1,0,1" />
      <Setter Property="IsTabStop" Value="False" />
      <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}" />
      <Setter Property="HorizontalContentAlignment" Value="Right" />
      <Setter Property="TextAlignment" Value="Right" />
      <Setter Property="TimeWatermarkTemplate" Value="{StaticResource DefaultWatermarkTemplate}" />
      <Setter Property="VerticalContentAlignment" Value="Center"/>
      <Setter Property="WatermarkTemplate" Value="{StaticResource DefaultWatermarkTemplate}" />
      <Setter Property="CalendarWidth" Value="178"/>
      <Setter Property="Template">
         <Setter.Value>
            <ControlTemplate TargetType="{x:Type local:DateTimePicker}">
               <Border>
                  <Grid>
                     <Grid>
                        <Grid.ColumnDefinitions>
                           <ColumnDefinition Width="*" />
                           <ColumnDefinition Width="Auto" />
                        </Grid.ColumnDefinitions>
                        <local:ButtonSpinner x:Name="PART_Spinner"
                                             IsTabStop="False"
                                             Background="{TemplateBinding Background}"
                                             BorderBrush="{TemplateBinding BorderBrush}"
                                             BorderThickness="{TemplateBinding BorderThickness}"
                                             ButtonSpinnerLocation="{TemplateBinding ButtonSpinnerLocation}"
                                             HorizontalContentAlignment="Stretch"
                                             VerticalContentAlignment="Stretch"
                                             AllowSpin="{TemplateBinding AllowSpin}"
                                             ShowButtonSpinner="{TemplateBinding ShowButtonSpinner}">
                           <local:WatermarkTextBox x:Name="PART_TextBox"
                                                   BorderThickness="0" 
                                                   Background="Transparent"
                                                   FontFamily="{TemplateBinding FontFamily}" 
                                                   FontSize="{TemplateBinding FontSize}" 
                                                   FontStretch="{TemplateBinding FontStretch}"
                                                   FontStyle="{TemplateBinding FontStyle}" 
                                                   FontWeight="{TemplateBinding FontWeight}" 
                                                   Foreground="{TemplateBinding Foreground}" 
                                                   HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                                                   VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
                                                   IsUndoEnabled="{Binding IsUndoEnabled, RelativeSource={RelativeSource TemplatedParent}}"
                                                   IsTabStop="True"
                                                   MinWidth="20"
                                                   AcceptsReturn="False"
                                                   Padding="{TemplateBinding Padding}"
                                                   TextAlignment="{TemplateBinding TextAlignment}"
                                                   TextWrapping="NoWrap" 
                                                   Text="{Binding Text, RelativeSource={RelativeSource TemplatedParent}}"
                                                   TabIndex="{TemplateBinding TabIndex}"
                                                   Watermark="{TemplateBinding Watermark}"
                                                   WatermarkTemplate="{TemplateBinding WatermarkTemplate}" />
                        </local:ButtonSpinner>
                        <ToggleButton x:Name="_calendarToggleButton"
                                      Grid.Column="1"
                                      Background="White"
                                      Focusable="False"
                                      IsChecked="{Binding IsOpen, RelativeSource={RelativeSource TemplatedParent}}"
                                      Style="{StaticResource DateTimePickerToggleButtonStyle}"
                                      IsHitTestVisible="{Binding IsOpen, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource InverseBoolConverter}}"
                                      IsEnabled="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource InverseBoolConverter}}"
                                      Visibility="{TemplateBinding ShowDropDownButton, Converter={StaticResource BooleanToVisibilityConverter}}"/>
                     </Grid>
                     <Popup x:Name="PART_Popup" 
                            IsOpen="{Binding IsChecked, ElementName=_calendarToggleButton}" 
                            StaysOpen="False"
                            ToolTip="{x:Static sys:String.Empty}">
                        <Popup.Resources>
                           <Style TargetType="ToolTip">
                              <Style.Triggers>
                                 <Trigger Property="Content"
                                          Value="{x:Static sys:String.Empty}">
                                    <Setter Property="Visibility"
                                            Value="Collapsed" />
                                 </Trigger>
                              </Style.Triggers>
                           </Style>
                        </Popup.Resources>
                        <Border BorderThickness="1" Background="{StaticResource PopupBackgroundBrush}" BorderBrush="{StaticResource PopupDarkBorderBrush}" Padding="3">
                           <StackPanel>
                              <Calendar x:Name="PART_Calendar"
                                        BorderThickness="0"
                                        DisplayMode="{Binding CalendarDisplayMode, RelativeSource={RelativeSource TemplatedParent}}" >
                                 <Calendar.Template>
                                    <ControlTemplate TargetType="{x:Type Calendar}">
                                       <Viewbox Width="{Binding CalendarWidth, RelativeSource={RelativeSource AncestorType={x:Type local:DateTimePicker}}}">
                                          <StackPanel x:Name="PART_Root"
                                                      HorizontalAlignment="Center">
                                             <CalendarItem x:Name="PART_CalendarItem"
                                                           BorderBrush="{TemplateBinding BorderBrush}"
                                                           BorderThickness="{TemplateBinding BorderThickness}"
                                                           Background="{TemplateBinding Background}"
                                                           Style="{TemplateBinding CalendarItemStyle}" />
                                          </StackPanel>
                                       </Viewbox>
                                    </ControlTemplate>
                                 </Calendar.Template>
                              </Calendar>
                              <local:TimePicker x:Name="PART_TimeUpDown"
                                                Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"
                                                Foreground="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}" 
                                                Format="{TemplateBinding TimeFormat}"
                                                FormatString="{TemplateBinding TimeFormatString}"
                                                Kind="{Binding Kind, RelativeSource={RelativeSource TemplatedParent}}"
                                                Value="{Binding Value, RelativeSource={RelativeSource TemplatedParent}}"
                                                Minimum="{Binding Minimum, RelativeSource={RelativeSource TemplatedParent}}"
                                                Maximum="{Binding Maximum, RelativeSource={RelativeSource TemplatedParent}}"
                                                ClipValueToMinMax="{Binding ClipValueToMinMax, RelativeSource={RelativeSource TemplatedParent}}"
                                                IsUndoEnabled="{Binding IsUndoEnabled, RelativeSource={RelativeSource TemplatedParent}}"
                                                AllowSpin="{TemplateBinding TimePickerAllowSpin}"
                                                Step="{TemplateBinding Step}"
                                                ShowButtonSpinner="{TemplateBinding TimePickerShowButtonSpinner}"
                                                Watermark="{TemplateBinding TimeWatermark}"
                                                WatermarkTemplate="{TemplateBinding TimeWatermarkTemplate}"
                                                Visibility="{TemplateBinding TimePickerVisibility}"/>
                           </StackPanel>
                        </Border>
                     </Popup>
                  </Grid>
               </Border>
               <ControlTemplate.Triggers>
                  <MultiDataTrigger>
                     <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding IsReadOnly, RelativeSource={RelativeSource Self}}"
                                   Value="False" />
                        <Condition Binding="{Binding AllowTextInput, RelativeSource={RelativeSource Self}}"
                                   Value="False" />
                     </MultiDataTrigger.Conditions>
                     <Setter Property="IsReadOnly"
                             Value="True"
                             TargetName="PART_TextBox" />
                  </MultiDataTrigger>
                  <DataTrigger Binding="{Binding IsReadOnly, RelativeSource={RelativeSource Self}}"
                               Value="True">
                     <Setter Property="IsReadOnly"
                             Value="True"
                             TargetName="PART_TextBox" />
                  </DataTrigger>
                  <Trigger Property="IsEnabled"
                           Value="False">
                     <Setter Property="Foreground"
                             Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" />
                  </Trigger>
                  <!--Binding one-way when UpdateValueOnEnterKey is True-->
                  <Trigger Property="UpdateValueOnEnterKey"
                           Value="True">
                     <Setter Property="Value"
                             Value="{Binding Value, RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay}"
                             TargetName="PART_TimeUpDown" />
                  </Trigger>
               </ControlTemplate.Triggers>
            </ControlTemplate>
         </Setter.Value>
      </Setter>
   </Style>

</ResourceDictionary>
