Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF日历头背景_Wpf_Xaml_.net 4.5 - Fatal编程技术网

WPF日历头背景

WPF日历头背景,wpf,xaml,.net-4.5,Wpf,Xaml,.net 4.5,我已经为日历创建了一个自定义样式,似乎我得到了除了标题颜色背景之外的所有我找不到如何更改的东西。此背景在日、月和年视图中可见 到目前为止,我已经在Blend中提取了4个模板,并且没有将所有模板中的代码粘贴到默认模板中,我将展示如何以日历样式引用它们: <Style x:Key="CustomCalendarStyle" TargetType="{x:Type Calendar}"> <Setter Property="CalendarButtonStyle"

我已经为日历创建了一个自定义样式,似乎我得到了除了标题颜色背景之外的所有我找不到如何更改的东西。此背景在日、月和年视图中可见

到目前为止,我已经在Blend中提取了4个模板,并且没有将所有模板中的代码粘贴到默认模板中,我将展示如何以日历样式引用它们:

 <Style x:Key="CustomCalendarStyle" TargetType="{x:Type Calendar}">
   <Setter Property="CalendarButtonStyle"
           Value="{StaticResource CustomCalendarButtonStyle}" />
   <Setter Property="CalendarDayButtonStyle"
           Value="{StaticResource CustomCalendarDayButtonStyle}" />
   <Setter Property="Template">
     <Setter.Value>
       <ControlTemplate TargetType="{x:Type Calendar}">
         <Grid x:Name="PART_Root">
           <CalendarItem x:Name="PART_CalendarItem"
                         BorderBrush="{TemplateBinding BorderBrush}"
                         BorderThickness="{TemplateBinding BorderThickness}"
                         Background="{TemplateBinding Background}"
                         Style="{DynamicResource CustomCalendarItemStyle}" />
         </Grid>
       </ControlTemplate>
     </Setter.Value>
   </Setter>
 </Style>
如果我们假设他们四个都有默认的xaml代码,有人知道这个背景设置在哪里吗?2018年11月的背景设置在哪里?这三种样式中似乎没有设置CalendarButtonStyle、CalendarDayButtonStyle、CalendarItemStyle

我找到了一种“脏”方法来实现这一点,将CalendarItemStyle模板的外边框设置为透明,这基本上设置了整个日历背景,然后在添加PART_HeaderButton、PART_PreviousButton和PART_NextButton之前添加一个边框

我很好奇这个背景是在哪里设置的原始风格。有人玩日历样式吗?

这是从日历控件的背景属性设置的。如果从Blend或Visual Studio编辑控件本身的模板;你会得到

<Style x:Key="CalendarStyle1" TargetType="{x:Type Calendar}">
    <Setter Property="Foreground" Value="#FF333333"/>
    <Setter Property="Background">
        <Setter.Value>
            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                <GradientStop Color="#FFE4EAF0" Offset="0"/>
                <GradientStop Color="#FFECF0F4" Offset="0.16"/>
                <GradientStop Color="#FFFCFCFD" Offset="0.16"/>
                <GradientStop Color="#FFFFFFFF" Offset="1"/>
            </LinearGradientBrush>
        </Setter.Value>
    </Setter>
    <Setter Property="BorderBrush">
        <Setter.Value>
            <LinearGradientBrush 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>
        </Setter.Value>
    </Setter>
    <Setter Property="BorderThickness" Value="1"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Calendar}">
                <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>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

背景的LinearGradientBrush集定义标题背景颜色。不清楚为什么会以这种方式实施;事情就是这样

这可能会有所帮助:@Elhamer这不是同一个问题。