WPF自定义时间选择控件

 


    <UserControl.Resources>
        <Style TargetType="DatePickerTextBox">
            <Setter Property="Control.Template">
                <Setter.Value>
                    <ControlTemplate>
                        <TextBox Text="{Binding Path=SelectedDate,UpdateSourceTrigger=PropertyChanged, StringFormat='yyyy/MM/dd HH:mm:ss', RelativeSource={RelativeSource AncestorType=DatePicker}}" BorderThickness="0" />
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
		
    </UserControl.Resources>
	
                                <StackPanel Orientation="Horizontal" Margin="5" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="4">
                                    <Label Content="{DynamicResource From:}" MinWidth="50" HorizontalContentAlignment="Right"></Label>
                                    <DatePicker Name="dtp" Margin="5,0" Text="{Binding DateFrom,UpdateSourceTrigger=PropertyChanged}" MinWidth="160"></DatePicker>
                                    <Label Content="{DynamicResource To:}" MinWidth="50" HorizontalContentAlignment="Right"></Label>
                                    <DatePicker  Margin="5,0" Text="{Binding DateTo,UpdateSourceTrigger=PropertyChanged}" MinWidth="160"></DatePicker>
                                </StackPanel>
		

                                <RadioButton Content="{DynamicResource Last month}" IsChecked="{Binding IsLastMonth}" Grid.Row="1" Grid.Column="0" Margin="5" ></RadioButton>
                                <RadioButton Content="{DynamicResource Last week}"  IsChecked="{Binding IsLastWeek}" Grid.Row="1" Grid.Column="1"  Margin="5" ></RadioButton>
                                <RadioButton Content="{DynamicResource Yesterday}" IsChecked="{Binding IsYesterday}" Grid.Row="1" Grid.Column="2" Margin="5" ></RadioButton>

                                <RadioButton Content="{DynamicResource Today}"  IsChecked="{Binding IsToday}" Grid.Row="2" Grid.Column="0" Margin="5" ></RadioButton>
								
								

 


        private string _DateFrom = DateTime.Now.AddDays(-1).ToString();

        public string DateFrom
        {
            get { return _DateFrom; }
            set
            {
                _DateFrom = value;
                RaisePropertyChanged("DateFrom");
            }
        }


        private string _DateTo = DateTime.Now.ToString();

        public string DateTo
        {
            get { return _DateTo; }
            set
            {
                _DateTo = value;

                DateTime dt = Convert.ToDateTime(value);
                dt = new DateTime(dt.Year, dt.Month, dt.Day);
                int sec = (24 * 60) * 60 - 1;
                string tem = dt.AddSeconds(sec).ToString();
                if (_DateTo.EndsWith("00:00:00"))
                    DateTo = tem;

                RaisePropertyChanged("DateTo");
            }
        }


        private bool _IsLastMonth;

        public bool IsLastMonth
        {
            get { return _IsLastMonth; }
            set
            {
                _IsLastMonth = value;
                if (value)
                {
                    //GregorianCalendar gc = new GregorianCalendar();
                    //PersianDate pd = new PersianDate(DateTime.Now);

                    DateTime dt = DateTime.Now;
                    dt = new DateTime(dt.Year, dt.Month, dt.Day);
                    dt = dt.AddDays(-dt.Day);

                    int days = dt.Day - 1;

                    DateFrom = dt.AddDays(-days).ToString();
                    int sec = (24 * 60) * 60 - 1;
                    DateTo = dt.AddSeconds(sec).ToString();

                }
                RaisePropertyChanged("IsLastMonth");
            }
        }


        private bool _IsLastWeek;

        public bool IsLastWeek
        {
            get { return _IsLastWeek; }
            set
            {
                _IsLastWeek = value;

                if (value)
                {
                    DateTime dt = DateTime.Now;
                    dt = new DateTime(dt.Year, dt.Month, dt.Day);
                    dt = dt.AddDays(-(int)dt.DayOfWeek - 1);
                    DateFrom = dt.AddDays(-6).ToString();

                    int sec = (24 * 60) * 60 - 1;
                    DateTo = dt.AddSeconds(sec).ToString();

                }
                RaisePropertyChanged("IsLastWeek");
            }
        }


        private bool _IsYesterday;

        public bool IsYesterday
        {
            get { return _IsYesterday; }
            set
            {
                _IsYesterday = value;
                if (value)
                {
                    DateTime dt = DateTime.Now;
                    dt = new DateTime(dt.Year, dt.Month, dt.Day);
                    dt = dt.AddDays(-1);

                    DateFrom = dt.ToString();

                    int sec = (24 * 60) * 60 - 1;
                    DateTo = dt.AddSeconds(sec).ToString();
                }
                RaisePropertyChanged("IsYesterday");
            }
        }


        private bool _IsToday;

        public bool IsToday
        {
            get { return _IsToday; }
            set
            {
                _IsToday = value;
                if (value)
                {
                    DateTime dt = DateTime.Now;
                    dt = new DateTime(dt.Year, dt.Month, dt.Day);

                    DateFrom = dt.ToString();

                    int sec = (24 * 60) * 60 - 1;
                    DateTo = dt.AddSeconds(sec).ToString();
                }
                RaisePropertyChanged("IsToday");
            }
        }

Guess you like

Origin blog.csdn.net/u012842630/article/details/118345049
Recommended