网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计资源 > Silverlight > 正文

Calendar组件(日历组件)的研究

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

组件所在命名空间:

System.Windows.Controls

 

组件常用属性:

SelectedDate:获取或设置当前被选中的日期

DisplayDate:获取或设置日期以显示
DisplayDateStart:获取或设置被显示的第一个日期
DisplayDateEnd:获取或设置被显示的最后一个日期
SelectionMode:获取或设置Calendar组件的选取模式

None:设置日历为不可选

SingleDate:只能选择单一日期

SingleRange:只能连续选取日期

MultipleRange:能连续或者间隔地(通过按住Ctrl键)选取日期
BlackoutDates:获取或设置被标记为不可选的一个日期集合
SelectedDates:获取被选中的一个日期集合
IsTodayHighlighted:是否将今日日期高亮显示。

组件常用事件:

DisplayDateChanged:显示日期改变

DisplayModeChanged:显示模式改变

SelectedDatesChanged:被选中日期改变

 

实例:

说明:在属性方面应当重点掌握该组件的BlackoutDates和SelectedDates属性(可用于数据库的交互),在事件方面应当重点掌握SelectedDatesChanged事件。

效果图:

[原始状态]

[显示日期范围]

[SingleRange]

[MultipleRange和BlackoutDates]

[背景图片和背景视频]

代码段:
MainPage.xaml代码:(由Microsoft Expression Blend 3设计)

 

<UserControl

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

    mc:Ignorable="d" xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls" xmlns:dataInput="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.Input" x:Class="Calendar.MainPage"

    xmlns:src="clr-namespace:Calendar"

d:DesignWidth="640" d:DesignHeight="480" Width="640" Height="480">

<!--作为cbBackgroundImage的数据源-->

    <UserControl.Resources>

        <src:picsrcProvider x:Key="picsrcProvider"></src:picsrcProvider>

    </UserControl.Resources>

   

    <Grid x:Name="LayoutRoot" Width="640" Height="480" Background="White">

     <controls:Calendar x:Name="cal" Height="164" HorizontalAlignment="Left" Margin="31,24,0,0" VerticalAlignment="Top" Width="177" FontSize="16"/>

        <Canvas>

            <MediaElement x:Name="media" AutoPlay="False" IsMuted="True" IsHitTestVisible="False" Source="backvideo.wmv" Margin="141,0,0,35" Visibility="Collapsed"></MediaElement>

        </Canvas>

     <ComboBox x:Name="cbSelectionMode" HorizontalAlignment="Right" Margin="0,112,100,0" Width="177" Height="28" SelectedIndex="1" VerticalAlignment="Top" d:LayoutOverrides="Height">

         <ComboBoxItem Content="None"/>

         <ComboBoxItem Content="SingleDate"/>

         <ComboBoxItem Content="SingleRange"/>

         <ComboBoxItem Content="MultipleRange"/>

     </ComboBox>

     <dataInput:Label Height="19" Margin="240,112,294,0" VerticalAlignment="Top" Content="日历选取模式:" FontSize="16"/>

     <dataInput:Label Height="24" Margin="241,24,256,0" VerticalAlignment="Top" Content="显示日期范围:" FontSize="16"/>

     <dataInput:Label Height="25" HorizontalAlignment="Left" Margin="240,66,0,0" VerticalAlignment="Top" Width="29" Content="从" FontSize="16"/>

     <dataInput:Label FontSize="16" Height="25" HorizontalAlignment="Right" Margin="0,66,198,0" VerticalAlignment="Top" Width="29" Content="到"/>

     <controls:DatePicker x:Name="dpShowFrom" Height="25" Margin="269,66,240,0" VerticalAlignment="Top" Width="131"/>

     <controls:DatePicker x:Name="dpShowTo" Height="25" HorizontalAlignment="Right" Margin="0,66,59,0" VerticalAlignment="Top" Width="131"/>

     <dataInput:Label HorizontalAlignment="Left" Margin="33,214,0,238" Width="134" Content="当前选中的日期:" FontSize="16"/>

     <TextBox x:Name="tbSelectedDate" Height="33" HorizontalAlignment="Left" Margin="33,0,0,188" VerticalAlignment="Bottom" Width="175" TextWrapping="Wrap" FontSize="16"/>

     <dataInput:Label FontSize="16" Height="24" Margin="241,159,256,0" VerticalAlignment="Top" Content="不可选日期范围:"/>

     <dataInput:Label FontSize="16" Height="25" HorizontalAlignment="Left" Margin="240,201,0,0" VerticalAlignment="Top" Width="29" Content="从"/>

     <dataInput:Label FontSize="16" Height="25" HorizontalAlignment="Right" Margin="0,201,198,0" VerticalAlignment="Top" Width="29" Content="到"/>

     <controls:DatePicker x:Name="dpUnselectedFrom" Height="25" Margin="269,201,240,0" VerticalAlignment="Top" Width="131"/>

     <controls:DatePicker x:Name="dpUnselectedTo" Height="25" HorizontalAlignment="Right" Margin="0,201,59,0" VerticalAlignment="Top" Width="131"/>

     <dataInput:Label Margin="240,237,256,214" Content="已选中日期的集合:" FontSize="16"/>

     <TextBlock x:Name="tbSelectedDateCollection" Height="70" Margin="241,0,59,144" VerticalAlignment="Bottom" Text="<font color="#0000FF"><</font><font color="#800000">None</font><font color="#0000FF">></font>" TextWrapping="Wrap" Width="340" Foreground="Black"/>

     <dataInput:Label FontSize="16" Margin="241,0,256,112" Content="不可选日期的集合:" Height="24" VerticalAlignment="Bottom"/>

     <TextBlock x:Name="tbUnselectedDataCollection" Height="63" Margin="241,0,59,35" VerticalAlignment="Bottom" Text="<font color="#0000FF"><</font><font color="#800000">None</font><font color="#0000FF">></font>" TextWrapping="Wrap" Width="340"/>

     <Button x:Name="btnClear" Height="25" HorizontalAlignment="Right" Margin="0,201,8,0" VerticalAlignment="Top" Width="47" Content="清除" FontSize="14.667"/>

     <Button x:Name="btnClearSelectedDate" Height="25" HorizontalAlignment="Right" Margin="0,66,8,0" VerticalAlignment="Top" Width="47" Content="清除" FontSize="14.667"/>

     <dataInput:Label Height="30" HorizontalAlignment="Left" Margin="33,0,0,154" VerticalAlignment="Bottom" Width="106" Content="背景图片:" FontSize="16"/>

     <ComboBox x:Name="cbBackgroundImage" Height="28" ItemsSource="{Binding picsrc,Source={StaticResource picsrcProvider}}" HorizontalAlignment="Left" Margin="35,0,0,112" VerticalAlignment="Bottom" Width="173"/>

     <CheckBox x:Name="cbBackgroundVideo" Height="26" HorizontalAlignment="Left" Margin="35,0,0,57" VerticalAlignment="Bottom" Width="173" Content="视频背景" FontSize="16"/>

  </Grid>

</UserControl>

 


MainPage.xaml.cs代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
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.Media.Imaging;//目的:为了创建ImageBrush而导入的命名空间。

namespace Calendar
{
    public class picsrcProvider//cbBackgroundImage的数据源
    {
        public List<string> picsrc
        {
            get
            {
                return new List<string"images/calbackground.PNG""images/calbackground2.PNG" };
            }

        }

    }


    public partial class MainPage : UserControl
    {
        //定义全局变量
        ImageBrush bgimg = new ImageBrush();
        VideoBrush bgvideo = new VideoBrush();

        public MainPage()
        {

            InitializeComponent();

//注册控件触发事件的处理函数,个人建议使用该方法,以便于代码与界面设计分离

            this.cal.SelectedDatesChanged += new EventHandler(cal_SelectedDatesChanged);

            this.cbSelectionMode.SelectionChanged += new SelectionChangedEventHandler(cbSelectionMode_SelectionChanged);

            this.dpShowFrom.SelectedDateChanged += new EventHandler(dpShowFrom_SelectedDateChanged);

            this.dpShowTo.SelectedDateChanged += new EventHandler(dpShowTo_SelectedDateChanged);

            this.dpUnselectedTo.SelectedDateChanged += new EventHandler(dpUnselectedTo_SelectedDateChanged);

            this.btnClear.Click += new RoutedEventHandler(btnClear_Click);

            this.btnClearSelectedDate.Click += new RoutedEventHandler(btnClearSelectedDate_Click);

            this.cbBackgroundImage.SelectionChanged += new SelectionChangedEventHandler(cbBackgroundImage_SelectionChanged);

            this.Loaded += new RoutedEventHandler(MainPage_Loaded);

            this.cbBackgroundVideo.Checked += new RoutedEventHandler(cbBackgroundVideo_Checked);

            this.media.MediaEnded += new RoutedEventHandler(media_MediaEnded);
        }


        void media_MediaEnded(object sender, RoutedEventArgs e)
        {//背景视频的重播
            media.Position = TimeSpan.FromSeconds(0);
            media.Play();
        }

 

        void cbBackgroundVideo_Checked(object sender, RoutedEventArgs e)
        {//背景视频的处理
            bool? state = cbBackgroundVideo.IsChecked;
            if (state == true)
            {
                media.Play();
                bgvideo.SourceName = "media";
                bgvideo.Stretch = Stretch.Fill;
               bgvideo.Opacity = 0.5;
                cal.Background = bgvideo;
            }

        }


        void cbBackgroundImage_SelectionChanged(object sender, SelectionChangedEventArgs e)

        {//背景图片的选择
            string imgSource = cbBackgroundImage.SelectedItem.ToString();
            bgimg.ImageSource = new BitmapImage(new Uri(@imgSource, UriKind.Relative));
            bgimg.Opacity = 0.5;
            bgimg.Stretch = Stretch.Fill;
            cal.Background = bgimg;
        }

        void MainPage_Loaded(object sender, RoutedEventArgs e)
        {
            media.Play();
        }

 

        void btnClearSelectedDate_Click(object sender, RoutedEventArgs e)
        {
            cal.SelectedDates.Clear();
            tbSelectedDate.Text = String.Empty;
            tbSelectedDateCollection.Text = String.Empty;
        }




        void btnClear_Click(object sender, RoutedEventArgs e)
        {
            cal.BlackoutDates.Clear();
            tbUnselectedDataCollection.Text = String.Empty;
        }


        void cal_SelectedDatesChanged(object sender, SelectionChangedEventArgs e)
        {//设置日历的可选日期集合并且显示

            try
            {
                tbSelectedDate.Text = ((DateTime)cal.SelectedDate).ToShortDateString();

                tbSelectedDateCollection.Text = String.Empty;

                cal.SelectedDates.ToList().ForEach(x => tbSelectedDateCollection.Text += x.ToShortDateString() + " ");
            }

            catch { }
        }

 

        void dpUnselectedTo_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
        {//设置日历的不可选日期集合并且显示
            try
            {
                if (dpUnselectedFrom.SelectedDate != null)
                {

                    cal.BlackoutDates.Clear();

                    cal.BlackoutDates.Add(new CalendarDateRange((DateTime)dpUnselectedFrom.SelectedDate, (DateTime)dpUnselectedTo.SelectedDate));

                    tbUnselectedDataCollection.Text = String.Empty;

                    cal.BlackoutDates.ToList().ForEach(x => tbUnselectedDataCollection.Text += "从" + x.Start.ToShortDateString() + "到" + x.End.ToShortDateString());
                }

            }

            catch { }
        }
 

        void dpShowTo_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
        {
            cal.DisplayDateEnd = dpShowTo.SelectedDate;
        }

        void dpShowFrom_SelectedDateChanged(object sender, SelectionChangedEventArgs e)

        {

            cal.DisplayDateStart = dpShowFrom.SelectedDate;

        }


        void cbSelectionMode_SelectionChanged(object sender, SelectionChangedEventArgs e)

        {//处理日历的选择模式

            string mode = ((ComboBoxItem)cbSelectionMode.SelectedItem).Content.ToString();

            switch(mode)
            {
                case "None":
                cal.SelectionMode = CalendarSelectionMode.None;

                break;
                case "SingleDate":
                cal.SelectionMode = CalendarSelectionMode.SingleDate;
                break;
                case "SingleRange":
                cal.SelectionMode = CalendarSelectionMode.SingleRange;
                break;
                case "MultipleRange":
                cal.SelectionMode = CalendarSelectionMode.MultipleRange;
                break;
            }

        }

    }

}
  • 下一篇资讯: Silverlight里实现DoubleClick
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师