wpf toolkit datetimepicker how to change color of

2019-09-10 07:40发布

问题:

How can I change the color of the spinner-arrows for the DateTimePicker from xceed WPF Toolkit? I cant find a Property where the set the color for the arrows.
Do i need to override the whole ButtonSpinner to do so?
If yes how can I do that, I still a beginner at WPF and if I simply try to copy the sourcecode from the ButtonSpinner reference page Visual Studio complains that the term "ResourceKeys does not exist in the namespace" of themes

回答1:

I have written spinner button style as follows.could you try this once. just replace in replacebutton content template fill property with your background color

<!-- Brushes For Arrow -->
<Geometry x:Key="UpArrowGeometry">M 0,3 C0,3 0,4 0,4 0,4 3,4 3,4 3,4 3,3 3,3 3,3 4,3 4,3 4,3 4,4 4,4 4,4 7,4 7,4 7,4 7,3 7,3 7,3 6,3 6,3 6,3 6,2 6,2 6,2 5,2 5,2 5,2 5,1 5,1 5,1 4,1 4,1 4,1 4,0 4,0 4,0 3,0 3,0 3,0 3,1 3,1 3,1 2,1 2,1 2,1 2,2 2,2 2,2 1,2 1,2 1,2 1,3 1,3 1,3 0,3 0,3 z</Geometry>
   <Geometry x:Key="DownArrowGeometry">M 0,1 C0,1 0,0 0,0 0,0 3,0 3,0 3,0 3,1 3,1 3,1 4,1 4,1 4,1 4,0 4,0 4,0 7,0 7,0 7,0 7,1 7,1 7,1 6,1 6,1 6,1 6,2 6,2 6,2 5,2 5,2 5,2 5,3 5,3 5,3 4,3 4,3 4,3 4,4 4,4 4,4 3,4 3,4 3,4 3,3 3,3 3,3 2,3 2,3 2,3 2,2 2,2 2,2 1,2 1,2 1,2 1,1 1,1 1,1 0,1 0,1 z</Geometry>

<!-- Spinner Button Style -->
  <LinearGradientBrush x:Key="ControlNormalBorderKey"
                        EndPoint="0,20"                        
                        StartPoint="0,0"
                        >
      <GradientStop Color="#ABADB3"
                    Offset="0.05" />
      <GradientStop Color="#E2E3EA"
                    Offset="0.07" />
      <GradientStop Color="#E3E9EF"
                    Offset="1" />
   </LinearGradientBrush>

  <SolidColorBrush x:Key=DisabledBrush Color="#F4F4F4"/>

 <Style TargetType="{x:Type local:ButtonSpinner}">
      <Setter Property="Background" Value="#FFFFFFFF" />
      <Setter Property="BorderBrush" Value="{StaticResource ControlNormalBorderKey}" />
      <Setter Property="BorderThickness" Value="1" />
      <Setter Property="Focusable" Value="False" />
      <Setter Property="HorizontalContentAlignment" Value="Stretch" />
      <Setter Property="IsTabStop" Value="True" />
      <Setter Property="Padding" Value="1" />
      <Setter Property="VerticalContentAlignment" Value="Center" />
      <Setter Property="Template">
         <Setter.Value>
            <ControlTemplate TargetType="{x:Type local:ButtonSpinner}">
               <Border x:Name="Border" SnapsToDevicePixels="True" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" >
                  <Grid>
                     <Grid.ColumnDefinitions>
                        <ColumnDefinition x:Name="firstContentColumn" Width="*" />
                        <ColumnDefinition x:Name="secondContentColumn" Width="Auto" />
                     </Grid.ColumnDefinitions>
                     <ContentPresenter x:Name="contentPresenter" Focusable="False" Margin="{TemplateBinding Padding}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />

                     <Grid x:Name="gridContent" Grid.Column="1" Visibility="{TemplateBinding ShowButtonSpinner, Converter={StaticResource BooleanToVisibilityConverter}}" Width="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}">
                        <Grid.RowDefinitions>
                           <RowDefinition Height="*" />
                           <RowDefinition Height="*" />
                        </Grid.RowDefinitions>

                        <RepeatButton x:Name="PART_IncreaseButton"
                                   Style="{DynamicResource {x:Static themes:ResourceKeys.SpinnerButtonStyleKey}}"
                                   IsTabStop="{TemplateBinding IsTabStop}">
                       <RepeatButton.ContentTemplate> 
                 <DataTemplate>
      <Path Width="7"
            Height="4"
            Data="{StaticResource UpArrowGeometry}"
            Fill="{StaticResource YourBackgroundColor}"
            SnapsToDevicePixels="True"
            HorizontalAlignment="Center"
            VerticalAlignment="Center"
            Focusable="False" />
            </DataTemplate>
                       </RepeatButton.ContentTemplate>

                        <RepeatButton x:Name="PART_DecreaseButton"
                                   Grid.Row="1"
                                   Style="{DynamicResource {x:Static themes:ResourceKeys.SpinnerButtonStyleKey}}"
                                   IsTabStop="{TemplateBinding IsTabStop}"> 
                        <RepeatButton.ContentTemplate>
                        </RepeatButton>
                <DataTemplate>
      <Path Width="7"
            Height="4"
            Data="{StaticResource DownArrowGeometry}"
            Fill="{StaticResource YourBackgroundColor}"
            SnapsToDevicePixels="True"
            HorizontalAlignment="Center"
            VerticalAlignment="Center"
            Focusable="False" />
   </DataTemplate>

                          </RepeatButton.ContentTemplate>
                     </Grid>
                  </Grid>
               </Border>
               <ControlTemplate.Triggers>
                  <Trigger Property="IsEnabled" Value="False">
                     <Setter Property="Background" Value="{StaticResource DisabledBrush}" />
                  </Trigger>
                  <Trigger SourceName="PART_IncreaseButton" Property="IsEnabled" Value="False">
                     <Setter TargetName="PART_IncreaseButton" Property="ContentTemplate" Value="{StaticResource IncreaseGlyphDisabledKey}" />
                  </Trigger>
                  <Trigger SourceName="PART_DecreaseButton" Property="IsEnabled" Value="False">
                     <Setter TargetName="PART_DecreaseButton" Property="ContentTemplate" Value="{StaticResource DecreaseGlyphDisabledKey}" />
                  </Trigger>
                  <Trigger Property="ButtonSpinnerLocation"
                           Value="Left">
                     <Setter TargetName="firstContentColumn"
                             Property="Width"
                             Value="Auto" />
                     <Setter TargetName="secondContentColumn"
                             Property="Width"
                             Value="*" />
                     <Setter TargetName="contentPresenter"
                             Property="Grid.Column"
                             Value="1" />
                     <Setter TargetName="gridContent"
                             Property="Grid.Column"
                             Value="0" />
                  </Trigger>
               </ControlTemplate.Triggers>
            </ControlTemplate>
         </Setter.Value>
      </Setter>
   </Style>