System.Windows.Controls Nam ...


.NET Framework Class Library for Silverlight
DatePicker Class

Represents a control that allows the user to select a date.

Namespace:  System.Windows.Controls
Assembly:  System.Windows.Controls (in System.Windows.Controls.dll)
Syntax

Visual Basic (Declaration)
<TemplatePartAttribute(Name := "TextBox", Type := GetType(DatePickerTextBox))> _
<TemplateVisualStateAttribute(Name := "Normal", GroupName := "CommonStates")> _
<TemplateVisualStateAttribute(Name := "Disabled", GroupName := "CommonStates")> _
<TemplatePartAttribute(Name := "Root", Type := GetType(FrameworkElement))> _
<TemplateVisualStateAttribute(Name := "InvalidUnfocused", GroupName := "ValidationStates")> _
<TemplatePartAttribute(Name := "Button", Type := GetType(Button))> _
<TemplatePartAttribute(Name := "Popup", Type := GetType(Popup))> _
<StyleTypedPropertyAttribute(Property := "CalendarStyle", StyleTargetType := GetType(Calendar))> _
<TemplateVisualStateAttribute(Name := "Valid", GroupName := "ValidationStates")> _
<TemplateVisualStateAttribute(Name := "InvalidFocused", GroupName := "ValidationStates")> _
Public Class DatePicker _
    Inherits Control
Visual Basic (Usage)
Dim instance As DatePicker
C#
[TemplatePartAttribute(Name = "TextBox", Type = typeof(DatePickerTextBox))]
[TemplateVisualStateAttribute(Name = "Normal", GroupName = "CommonStates")]
[TemplateVisualStateAttribute(Name = "Disabled", GroupName = "CommonStates")]
[TemplatePartAttribute(Name = "Root", Type = typeof(FrameworkElement))]
[TemplateVisualStateAttribute(Name = "InvalidUnfocused", GroupName = "ValidationStates")]
[TemplatePartAttribute(Name = "Button", Type = typeof(Button))]
[TemplatePartAttribute(Name = "Popup", Type = typeof(Popup))]
[StyleTypedPropertyAttribute(Property = "CalendarStyle", StyleTargetType = typeof(Calendar))]
[TemplateVisualStateAttribute(Name = "Valid", GroupName = "ValidationStates")]
[TemplateVisualStateAttribute(Name = "InvalidFocused", GroupName = "ValidationStates")]
public class DatePicker : Control
XAML Object Element Usage
<controls:DatePicker .../>

XAML Values

controls:

A prefix that is defined to map the XML namespace for the System.Windows.Controls assembly and the System.Windows.Controls CLR namespace.

Remarks

The DatePicker control allows the user to select a date by either typing it into a text field or by using a drop-down Calendar control.

Many of a DatePicker control's properties are for managing its built-in Calendar, and function identically to the equivalent property in Calendar. In particular, the DatePicker..::.IsTodayHighlighted, DatePicker..::.FirstDayOfWeek, DatePicker..::.BlackoutDates, DatePicker..::.DisplayDateStart, DisplayDateEnd, DatePicker..::.DisplayDate, and DatePicker..::.SelectedDate properties function identically to their Calendar counterparts. For more information, see Calendar.

Users can type a date directly into a text field, which sets the Text property. If the DatePicker cannot convert the entered string to a valid date, the DateValidationError event will be raised. By default, this causes an exception, but an event handler for DateValidationError can set the ThrowException property to false and prevent an exception from being raised.

NoteNote:

The DatePicker control is available as part of the libraries in the Silverlight Software Development Kit (SDK). For more information, see the Silverlight Tools.

Customizing the DatePicker Control

To apply the same property settings to multiple DatePicker controls, use the Style property. To change the visual structure and visual behavior of a DatePicker, copy and modify its default style and template. For more information, see Control Customization.

If a dependency property for a DatePicker is set by its default style, the property might change from its default value when the DatePicker appears in the application. For more information, see Dependency Property Value Precedence. You can get the default style and template for DatePicker from DatePicker Styles and Templates.

NoteNote:

Setting a visual property will only have an effect if that property is both present in DatePicker control's default template and is set by using a TemplateBinding. You can find a list of visual properties in the "Changing the Visual Structure of a Control" section of Customizing the Appearance of an Existing Control by Using a ControlTemplate.

Examples

The following code and XAML creates a page with two Calendar controls and two DatePicker controls. The Calendar and DatePicker controls are configured in a variety of ways. To run this sample, create a Silverlight project named CalendarExample. In the project, add a reference to the System.Windows.Controls assembly and add the following code to the appropriate files.

Run this sample

Visual Basic
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Documents
Imports System.Windows.Input
Imports System.Windows.Media
Imports System.Windows.Media.Animation
Imports System.Windows.Shapes

Partial Public Class Page
    Inherits UserControl
    Public Sub New()
        InitializeComponent()

        ' Sets a Calendar to display a range of dates from 1/10/2009 to 
        ' 4/18/2009. 2/15/2009 is selected, but 3/2009 is initially 
        ' displayed. 
        cal.SelectedDate = New DateTime(2009, 2, 15)
        cal.DisplayDate = New DateTime(2009, 3, 15)

        ' if DisplayDate is not set, the Calendar displays 
        ' the SelectedDate. 
        cal.DisplayDateStart = New DateTime(2009, 1, 10)
        cal.DisplayDateEnd = New DateTime(2009, 4, 18)

        'Sets a Calendar to allow multiple selections, and configures 
        'some dates to be unselectable. 
        cal3.SelectionMode = CalendarSelectionMode.MultipleRange
        cal3.DisplayDate = New DateTime(2009, 1, 1)
        cal3.DisplayDateStart = New DateTime(2009, 1, 1)
        cal3.DisplayDateEnd = New DateTime(2009, 1, 31)
        cal3.BlackoutDates.Add(New CalendarDateRange(New DateTime(2009, 1, 2), New DateTime(2009, 1, 4)))
        cal3.BlackoutDates.Add(New CalendarDateRange(New DateTime(2009, 1, 9)))
        cal3.BlackoutDates.Add(New CalendarDateRange(New DateTime(2009, 1, 16)))
        cal3.BlackoutDates.Add(New CalendarDateRange(New DateTime(2009, 1, 23), New DateTime(2009, 1, 25)))
        cal3.BlackoutDates.Add(New CalendarDateRange(New DateTime(2009, 1, 30)))

        cal3.SelectedDates.Add(New DateTime(2009, 1, 5))
        cal3.SelectedDates.AddRange(New DateTime(2009, 1, 12), New DateTime(2009, 1, 15))
        cal3.SelectedDates.Add(New DateTime(2009, 1, 27))
    End Sub


    'Simple event handlers that updates a TextBlock when 
    'the drop-down calendar is opened or closed. 
    Private Sub dp1_CalendarOpened(ByVal sender As Object, ByVal e As RoutedEventArgs) Handles dp1.CalendarOpened
        text1.Text = "DatePicker Calendar opened!"
    End Sub

    Private Sub dp1_CalendarClosed(ByVal sender As Object, ByVal e As RoutedEventArgs) Handles dp1.CalendarClosed
        text1.Text = "DatePicker Calendar closed!"
    End Sub

    'Updates a TextBlock with information from the SelectedDateChanged event. 
    Private Sub dp2_SelectedDateChanged(ByVal sender As Object, ByVal e As SelectionChangedEventArgs) Handles dp2.SelectedDateChanged
        'RemovedItems will be null if this is the first time a date was selected. 
        If e.RemovedItems Is Nothing OrElse e.RemovedItems.Count = 0 Then
            text1.Text = "Changed SelectedDate from nothing to " + e.AddedItems(0) + "!"
        Else
            text1.Text = "Changed SelectedDate from " + e.RemovedItems(0) + " to " + e.AddedItems(0) + "!"
        End If
    End Sub

    'Updates a TextBlock with information from the DisplayDateChanged event. 
    'This will happen every time the visible month changes, whether triggered 
    'by user input or by code. 
    Private Sub cal_DisplayDateChanged(ByVal sender As Object, ByVal e As CalendarDateChangedEventArgs) Handles cal.DisplayDateChanged
        'This should never occur unless DisplayDate is explicitly set to nothing. 
        If e.RemovedDate Is Nothing Then
            text1.Text = "Changed DisplayDate from nothing to " + e.AddedDate + "!"
        Else
            text1.Text = "Changed DisplayDate from " + e.RemovedDate + " to " + e.AddedDate + "!"
        End If
    End Sub
End Class
C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace CalendarExample
{
    public partial class Page : UserControl
    {
        public Page()
        {
            InitializeComponent();

            //Sets a Calendar to display a range of dates from 1/10/2009 to 
            //4/18/2009.  2/15/2009 is selected, but 3/2009 is initially 
            //displayed.
            cal.SelectedDate = new DateTime(2009, 2, 15);
            cal.DisplayDate = new DateTime(2009, 3, 15); //if DisplayDate is not set, the Calendar displays
            //the SelectedDate.
            cal.DisplayDateStart = new DateTime(2009, 1, 10);
            cal.DisplayDateEnd = new DateTime(2009, 4, 18);

            //Sets a Calendar to allow multiple selections, and configures
            //some dates to be unselectable.
            cal3.SelectionMode = CalendarSelectionMode.MultipleRange;
            cal3.DisplayDate = new DateTime(2009, 1, 1);
            cal3.DisplayDateStart = new DateTime(2009, 1, 1);
            cal3.DisplayDateEnd = new DateTime(2009, 1, 31);
            cal3.BlackoutDates.Add(new CalendarDateRange(new DateTime(2009, 1, 2), new DateTime(2009, 1, 4)));
            cal3.BlackoutDates.Add(new CalendarDateRange(new DateTime(2009, 1, 9)));
            cal3.BlackoutDates.Add(new CalendarDateRange(new DateTime(2009, 1, 16)));
            cal3.BlackoutDates.Add(new CalendarDateRange(new DateTime(2009, 1, 23), new DateTime(2009, 1, 25)));
            cal3.BlackoutDates.Add(new CalendarDateRange(new DateTime(2009, 1, 30)));

            cal3.SelectedDates.Add(new DateTime(2009, 1, 5));
            cal3.SelectedDates.AddRange(new DateTime(2009, 1, 12), new DateTime(2009, 1, 15));
            cal3.SelectedDates.Add(new DateTime(2009, 1, 27));

            //Hook up events to event handlers.
            dp1.CalendarOpened += new RoutedEventHandler(dp1_CalendarOpened);
            dp1.CalendarClosed += new RoutedEventHandler(dp1_CalendarClosed);

            dp2.SelectedDateChanged += new EventHandler<SelectionChangedEventArgs>(dp2_SelectedDateChanged);
            cal2.DisplayDateChanged += new EventHandler<CalendarDateChangedEventArgs>(cal_DisplayDateChanged);
        }


        //Simple event handlers that updates a TextBlock when 
        //the drop-down calendar is opened or closed.
        void dp1_CalendarOpened(object sender, RoutedEventArgs e)
        {
            text1.Text = "DatePicker Calendar opened!";
        }
        void dp1_CalendarClosed(object sender, RoutedEventArgs e)
        {
            text1.Text = "DatePicker Calendar closed!";
        }

        //Updates a TextBlock with information from the SelectedDateChanged event.
        void dp2_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
        {
            //RemovedItems will be null if this is the first time a date was selected.
            if (e.RemovedItems == null || e.RemovedItems.Count == 0)
            {
                text1.Text = "Changed SelectedDate from null to " + e.AddedItems[0] + "!";
            }
            else
            {
                text1.Text = "Changed SelectedDate from " + e.RemovedItems[0] + " to " + e.AddedItems[0] + "!";
            }
        }

        //Updates a TextBlock with information from the DisplayDateChanged event.
        //This will happen every time the visible month changes, whether triggered
        //by user input or by code.
        void cal_DisplayDateChanged(object sender, CalendarDateChangedEventArgs e)
        {
            //This should never occur unless DisplayDate is explicitly set to null.
            if (e.RemovedDate == null)
            {
                text1.Text = "Changed DisplayDate from null to " + e.AddedDate + "!";
            }
            else
            {
                text1.Text = "Changed DisplayDate from " + e.RemovedDate + " to " + e.AddedDate + "!";
            }
        }
    }
}
XAML
<UserControl  xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls" x:Class="CalendarExample.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    FontFamily="Trebuchet MS" FontSize="11"
    Width="600" Height="750">
    <StackPanel x:Name="LayoutRoot" Background="White">
        <StackPanel Orientation="Horizontal" Margin="5" >
        <!-- A basic Calendar. -->
        <TextBlock  Width="100" 
                   Text="Calendar with date ranges defined:" TextWrapping="Wrap" Margin="5" />
        <controls:Calendar x:Name="cal" />

        <!-- A Calendar does not highlight today's date. -->
            <TextBlock  Width="100" 
                   Text="Calendar that does not highlight today's date:" TextWrapping="Wrap" Margin="5"/>
            <controls:Calendar x:Name="cal2" Canvas.Left="270" Canvas.Top="100" 
                        IsTodayHighlighted="false" />
        </StackPanel>
        <!-- Two DatePicker controls, one using the default Short date format -->
        <!-- and the other using the Long date format. -->
        <StackPanel Orientation="Horizontal" >
        <TextBlock Width="200" Margin="5" 
                   Text="DatePicker with Short date format and Calendar event handlers:" TextWrapping="Wrap" />
        <controls:DatePicker x:Name="dp1" Height="20" Width="200" />
        </StackPanel>
        <StackPanel Orientation="Horizontal" >
        <TextBlock Width="200" Margin="5"
                   Text="DatePicker with Long date format and DateSelected event handler:" TextWrapping="Wrap" />
        <controls:DatePicker Height="20" x:Name="dp2" SelectedDateFormat="Long" Width="200"/>
        </StackPanel>
        <!-- Output TextBlock -->
        <TextBlock x:Name="text1" HorizontalAlignment="Left" Height="40" Width="350" Margin="5" />

        <!-- A Calendar to demonstrate multiple selection. -->
        <StackPanel Orientation="Horizontal" >
        <TextBlock  Width="200" Margin="5"
                   Text="Calendar with multiple selections and blackout dates:" TextWrapping="Wrap" />
        <controls:Calendar x:Name="cal3" />
        </StackPanel>
     </StackPanel>
</UserControl>

The previous example produces output that is similar to the following illustration. The first part of the illustration shows a DatePicker before it is selected. The second part of the illustration shows the DatePicker with the calendar visible. The third part of the illustration shows the DatePicker after a date has been selected.

Silverlight DatePicker control
Inheritance Hierarchy

System..::.Object
  System.Windows..::.DependencyObject
    System.Windows..::.UIElement
      System.Windows..::.FrameworkElement
        System.Windows.Controls..::.Control
          System.Windows.Controls..::.DatePicker
Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Platforms

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.

See Also

Reference

Other Resources

Tags :


Page view tracker