兩個時間控件??
<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天