<c1:C1DateTimePicker的日期时间控件,控制日期可以修改,时间不能修改,另外控制开始时间的最大值比结束时间小一天
两个时间控件
<c1:C1DateTimePicker Width="170" EditMode="DateTime" CustomDateFormat="yyyy-MM-dd" CustomTimeFormat="HH:mm:ss" Style="{StaticResource ListSearch-DateTimePicker}"
x:Name="dateTimePicker" PreviewKeyDown="DateTimePicker_PreviewKeyDown" TimeIncrement="00:00:0"
PreviewTextInput="DateTimePicker_PreviewTextInput"
MaxDate="{Binding MaxAllowedStartDate, Mode=TwoWay}" MinDate="1/1/2000" TimeFormat="LongTime" AllowNull="False" DateTime="{Binding StoreStartTime, Mode=TwoWay}"/>
<Label Style="{StaticResource ListSearch-Label}" Content="结束时间:"/>
<c1:C1DateTimePicker Width="170" EditMode="DateTime" CustomDateFormat="yyyy-MM-dd" CustomTimeFormat="HH:mm:ss" Style="{StaticResource ListSearch-DateTimePicker}"
x:Name="dateTimePicker1" TimeIncrement="00:00:0"
PreviewTextInput="DateTimePicker_PreviewTextInput" PreviewKeyDown="DateTimePicker_PreviewKeyDown"
MinDate="1/1/2000" TimeFormat="LongTime" AllowNull="False" DateTime="{Binding StoreEndTime, Mode=TwoWay}"/>
点击事件控制时间不能修改
// 禁止键盘输入(如方向键切换到时间部分)
private void DateTimePicker_PreviewKeyDown(object sender, KeyEventArgs e)
{
// 禁止方向键(可能用于切换日期/时间部分)
if (e.Key == Key.Left || e.Key == Key.Right || e.Key == Key.Up || e.Key == Key.Down)
{
e.Handled = true; // 阻止事件继续传递
}
// 禁止输入 ':'(时间分隔符)
if (e.Key == Key.OemSemicolon )
{
e.Handled = true;
}
}
// 禁止文本输入(如直接输入时间)
private void DateTimePicker_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
// 禁止输入 ':' 或数字(如果时间部分可能被编辑)
if (e.Text == ":" || char.IsDigit(e.Text[0]))
{
e.Handled = true;
}
}
设置开始时间的最大值 MaxAllowedStartDate
private DateTime? _storeEndTime;
/// <summary>
/// 交期日期查询结束日期
/// </summary>
public DateTime? StoreEndTime
{
get { return _storeEndTime; }
set
{
if (_storeEndTime != value)
{
_storeEndTime = value;
// 计算 MaxDate:StoreEndTime - 1天 + 1秒
//MaxAllowedStartDate = value.Value.AddDays(-1).AddSeconds(1);
RaisePropertyChanged(() => StoreEndTime);
}
// 计算 MaxAllowedStartDate:StoreEndTime - 1天 + 1秒
if (value.HasValue)
{
MaxAllowedStartDate = value.Value.AddDays(-1).AddSeconds(1);
}
else
{
MaxAllowedStartDate = null;
}
RaisePropertyChanged(() => MaxAllowedStartDate);
}
}
//存储开始时间的最大值
public DateTime? MaxAllowedStartDate { get; set; }
效果:比如开始时间的最大值比结束时间小1天