Jump to content
rosacastro

Silverlight - calendar

Recommended Posts

rosacastro

Olá,

estou a usar o Silverlight com C#.

Uso o calendário para mostrar ao utilizador os meus eventos, ou seja quero selecionar dias mas não quero que o utilizador tenha possibilidade de selecionar datas.

Consigo selecionar datas com o método calendar.SelectedDates.Add(...), mas o utilizador consegue selecionar datas perdendo assim a minha seleção. Se colocar o SelectionMode=None deixo de poder fazer a minha seleção.

Conhecem alguma forma de dar a volta à questão?

Outra questão sobre o calendar. Pretendo alterar a cor de fundo dos dias selecionados, sabem como o fazer?

Obrigada,

Rosa castro

Share this post


Link to post
Share on other sites
rosacastro

Pois, mas se colocar IsEnabled=false o utilizador não pode navegar entre os meses/anos do calendário.

A ideia é o user poder ver os vários meses mas não selecionar datas.

Share this post


Link to post
Share on other sites
saramgsilva

Pois, mas se colocar IsEnabled=false o utilizador não pode navegar entre os meses/anos do calendário.

A ideia é o user poder ver os vários meses mas não selecionar datas.

Podes subscrever o evento que é displutado quando a data é alterada e atribuir novamente a data que pretendes, no sentido de simular que o utilizador não pode seleccionar uma data.

Mas isto não me parece bem.

Share this post


Link to post
Share on other sites
rosacastro

Pois, até ver implementei assim mas não me parece nada bonito :-)

Outra questão sobre o calendar. Pretendo alterar a cor de fundo dos dias selecionados, sabes como o fazer?

Obrigada!

Share this post


Link to post
Share on other sites
rosacastro

Cá vai o que fiz para "pintar" as datas selecionadas de outra cor:

<Style TargetType="System_Windows_Controls_Primitives:CalendarDayButton">

            <Setter Property="Background" Value="#BB0B13"/>

            <Setter Property="Template">

                <Setter.Value>

                    <ControlTemplate TargetType="System_Windows_Controls_Primitives:CalendarDayButton">

                        <Grid>

                            <VisualStateManager.VisualStateGroups>

                                <VisualStateGroup x:Name="SelectionStates">

                                    <VisualStateGroup.Transitions>

                                        <VisualTransition GeneratedDuration="0"/>

                                    </VisualStateGroup.Transitions>

                                    <VisualState x:Name="Unselected"/>

                                    <VisualState x:Name="Selected">

                                        <Storyboard>

                                            <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SelectedBackground"/>

                                        </Storyboard>

                                    </VisualState>

                                </VisualStateGroup>

                                <VisualStateGroup x:Name="CalendarButtonFocusStates">

                                    <VisualStateGroup.Transitions>

                                        <VisualTransition GeneratedDuration="0"/>

                                    </VisualStateGroup.Transitions>

                                    <VisualState x:Name="CalendarButtonFocused">

                                        <Storyboard>

                                            <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Visibility" Storyboard.TargetName="FocusVisual">

                                                <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>

                                            </ObjectAnimationUsingKeyFrames>

                                        </Storyboard>

                                    </VisualState>

                                    <VisualState x:Name="CalendarButtonUnfocused">

                                        <Storyboard>

                                            <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Visibility" Storyboard.TargetName="FocusVisual">

                                                <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>

                                            </ObjectAnimationUsingKeyFrames>

                                        </Storyboard>

                                    </VisualState>

                                </VisualStateGroup>

                                <VisualStateGroup x:Name="ActiveStates">

                                    <VisualStateGroup.Transitions>

                                        <VisualTransition GeneratedDuration="0"/>

                                    </VisualStateGroup.Transitions>

                                    <VisualState x:Name="Active"/>

                                    <VisualState x:Name="Inactive">

                                        <Storyboard>

                                            <ColorAnimation Duration="0" To="#FF777777" Storyboard.TargetProperty="(ContentControl.Foreground).(GradientBrush.GradientStops)[2].(GradientStop.Color)" Storyboard.TargetName="Content"/>

                                            <ColorAnimation Duration="0" To="#FF777777" Storyboard.TargetProperty="(ContentControl.Foreground).(GradientBrush.GradientStops)[3].(GradientStop.Color)" Storyboard.TargetName="Content"/>

                                        </Storyboard>

                                    </VisualState>

                                </VisualStateGroup>

                                <VisualStateGroup x:Name="DayStates">

                                    <VisualStateGroup.Transitions>

                                        <VisualTransition GeneratedDuration="0"/>

                                    </VisualStateGroup.Transitions>

                                    <VisualState x:Name="RegularDay"/>

                                    <VisualState x:Name="Today">

                                        <Storyboard>

                                            <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="TodayBackground"/>

                                            <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(ContentControl.Foreground).(GradientBrush.GradientStops)[1].(GradientStop.Offset)" Storyboard.TargetName="Content"/>

                                            <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(ContentControl.Foreground).(GradientBrush.GradientStops)[2].(GradientStop.Offset)" Storyboard.TargetName="Content"/>

                                        </Storyboard>

                                    </VisualState>

                                </VisualStateGroup>

                            </VisualStateManager.VisualStateGroups>

                            <Rectangle x:Name="TodayBackground" Fill="#FFAAAAAA" Opacity="0" RadiusY="1" RadiusX="1"/>

                            <Rectangle x:Name="SelectedBackground" Fill="{TemplateBinding Background}" Opacity="0" RadiusY="1" RadiusX="1"/>

                            <Rectangle x:Name="Background" Fill="{TemplateBinding Background}" Opacity="0" RadiusY="1" RadiusX="1"/>

                            <ContentControl x:Name="Content" ContentTemplate="{TemplateBinding ContentTemplate}"  Content="{TemplateBinding Content}" FontSize="{TemplateBinding FontSize}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" IsTabStop="False" Margin="5,1,5,1" VerticalAlignment="{TemplateBinding VerticalContentAlignment}">

                                <ContentControl.Foreground >

                                    <LinearGradientBrush>

                                        <GradientStop Color="Black" Offset="0"/>

                                        <GradientStop Color="Black" Offset="0"/>

                                        <GradientStop Color="Black" Offset="0"/>

                                        <GradientStop Color="Black" Offset="1"/>

                                    </LinearGradientBrush>

                                </ContentControl.Foreground>

                            </ContentControl>

                            <Rectangle x:Name="FocusVisual" IsHitTestVisible="false" RadiusY="1" RadiusX="1" Stroke="#BB0B13" Visibility="Collapsed"/>

                        </Grid>

                    </ControlTemplate>

                </Setter.Value>

            </Setter>

        </Style>

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.