在UWP中关闭日历视图的显示画笔效果?

时间:2018-10-17 01:31:20

标签: c# xaml uwp

我正在尝试在UWP中编辑日历视图的一些设计元素。
下面是日历视图的图片。

enter image description here

我试图关闭显示画笔效果,该效果出现在元素框本身和包围的元素框的边界处,但是失败了。

我想制作类似于“约会”应用程序日历的日历。
它有两个日历,其中两个没有显露笔刷。 enter image description here 我编辑了CalendarViewDayItemRevealStyle的模板,但这没用。

已添加

以下来源是模板的原始来源。我删除了Point over状态的二传手,但未删除显示画笔。

 <Style x:Key="CalendarViewDayItemRevealStyle" TargetType="CalendarViewDayItem">
        <Setter Property="MinWidth" Value="40"/>
        <Setter Property="MinHeight" Value="40"/>
        <Setter Property="Margin" Value="1"/>
        <Setter Property="Padding" Value="0, 0, 0, 4"/>
        <Setter Property="UseSystemFocusVisuals" Value="{StaticResource UseSystemFocusVisuals}"/>
        <Setter Property="FocusVisualMargin" Value="-2"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="CalendarViewDayItem">
                    <Grid x:Name="Root" Width="0">
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup x:Name="CommonStates">
                                <VisualState x:Name="Normal"/>
                                <VisualState x:Name="PointerOver">
                                    <VisualState.Setters>
                                        <Setter Target="Root.(RevealBrush.State)" Value="PointOver"/>
                                        <Setter Target="RootGrid.Background" Value="{ThemeResource ButtonRevealBackgroundPointerOver}" />
                                        <Setter Target="ContentPresenter.BorderBrush" Value="Transparent"/>
                                        <Setter Target="ContentPresenter.Foreground" Value="{ThemeResource ButtonForegroundPointerOver}" />
                                    </VisualState.Setters>
                                </VisualState>
                                <VisualState x:Name="Pressed">
                                    <VisualState.Setters>
                                        <Setter Target="Root.(RevealBrush.State)" Value="Pressed"/>
                                        <Setter Target="RootGrid.Background" Value="{ThemeResource ButtonRevealBackgroundPressed}" />
                                        <Setter Target="ContentPresenter.BorderBrush" Value="{ThemeResource ButtonRevealBackgroundPressed}" />
                                        <Setter Target="ContentPresenter.Foreground" Value="{ThemeResource ButtonForegroundPressed}" />
                                    </VisualState.Setters>
                                </VisualState>
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
    <Style x:Key="CalendarViewCalendarViewDayItemStyle1" 
           BasedOn="{StaticResource CalendarViewDayItemRevealStyle}" 
           TargetType="CalendarViewDayItem"/>

如何去除显露画笔效果?

2 个答案:

答案 0 :(得分:1)

如果您在generic.xaml文件中检查CalendarView的默认样式,则会看到它为CalendarItem指定了两个额外的显示画笔。

<Setter Property="CalendarItemForeground" Value="{ThemeResource CalendarViewCalendarItemForeground}" />
<Setter Property="CalendarItemBackground" Value="{ThemeResource CalendarViewCalendarItemRevealBackground}" />

您可以按以下方式进行更改:

<CalendarView CalendarItemBackground="{ThemeResource SystemControlBackgroundAltHighBrush}"  CalendarItemBorderBrush="Gray"></CalendarView>

然后,显示效果将消失。

  

出于设计目的,可从Windows SDK安装目录的\(Program Files)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP\xxxx\Generic文件夹中获取generic.xaml。

答案 1 :(得分:0)

最好将CalendarViewCalendarItemBackground用作ItemBackground。我没看到 CalendarViewCalendarItemBorderBrush,如果我们将ItemBorderBrush设置为null,也许可以使用。

<CalendarView CalendarItemBackground="{ThemeResource CalendarViewCalendarItemBackground}"  CalendarItemBorderBrush="{x:Null}"></CalendarView>