阻止Silverlight datepicker看起来已禁用多年

时间:2011-03-08 10:10:53

标签: silverlight silverlight-4.0 datepicker

silverlight日期选择器可以缩小以允许用户按年份进行选择,但由于某种原因,第一年和最后几年总是看起来已禁用。有办法防止这种情况吗?

Silverlight Datepicker

1 个答案:

答案 0 :(得分:2)

这是将元素的颜色和样式硬编码到其默认模板中的众多场所之一。因此,要更改这些“非活动”日历按钮的外观,您需要定义一个新模板。

首先,您需要创建controlsPrivitives:CalendarButton样式的副本,您可以从Calendar Styles and Templates获取样式的副本。将其放在用于您的用户控件的Resources中,甚至放在App.Xaml中。您需要复制MSDN主题中列出的命名空间别名。

现在,您可以使用自己的隐式样式来修改日历按钮。您将注意到模板中xaml具有此可视状态组: -

                           <vsm:VisualStateGroup x:Name="ActiveStates">
                                <vsm:VisualStateGroup.Transitions>
                                    <vsm:VisualTransition GeneratedDuration="0" />
                                </vsm:VisualStateGroup.Transitions>
                                <vsm:VisualState x:Name="Active" />
                                <vsm:VisualState x:Name="Inactive">
                                    <Storyboard>
                                        <ColorAnimation Storyboard.TargetName="Content" Storyboard.TargetProperty="(ContentControl.Foreground).(SolidColorBrush.Color)" To="#FF777777" Duration="0" />
                                    </Storyboard>
                                </vsm:VisualState>
                            </vsm:VisualStateGroup>

超出范围的那些年份被设置为非活动状态,因此具有您在上面的非活动状态中看到的硬编码灰色。所以根据您的喜好调整这个xaml。

如果你想要相同的日期按钮,你应该注意它们具有不同的控件CalendarDayButton所以你需要对它的默认样式进行相同的练习。