【问题标题】:wpf toolkit datetimepicker how to change color of spinnerwpf工具包datetimepicker如何更改微调器的颜色
【发布时间】:2015-07-01 06:05:56
【问题描述】:

如何从 xceed WPF Toolkit 更改 DateTimePicker 的微调箭头的颜色? 我找不到设置箭头颜色的属性。
我是否需要覆盖整个 ButtonSpinner 才能这样做?
如果是,我该怎么做,我仍然是 WPF 的初学者,如果我只是尝试从 ButtonSpinner reference page 复制源代码,Visual Studio 会抱怨主题的“命名空间中不存在 ResourceKeys”一词

【问题讨论】:

  • 我浏览了一下 libs 页面,似乎很难做到这一点(因为您需要覆盖大约 3 或 4 种不同的样式),现在我只是决定禁用微调器,但是如果有人找到好的解决方案,请发布它

标签: wpf xaml wpftoolkit wpf-style


【解决方案1】:

我已经编写了如下微调按钮样式。您可以尝试一下吗?只需将 replacebutton 内容模板填充属性 替换为您的背景颜色

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-02
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 2013-08-21
    • 1970-01-01
    相关资源
    最近更新 更多