2010-04-09 93 views
7

如何將驗證應用於WPF datepicker工具箱?如果選擇了無效日期,並且在某些情況下我有到達和離開日期,我希望它會出錯,所以我想驗證它以確保到達日期不晚於出發日期。日期選擇器驗證WPF

回答

6

它似乎是一年以上日期選擇器驗證was a problem。無論如何,現在它的工作。

我不是一個WPF專家,BU我會盡力給你一個想法

寫一個驗證規則

public class DateExpiredRule : ValidationRule 
{ 

    public override ValidationResult Validate(object value, CultureInfo cultureInfo) 
    { 
     DateTime orderDate = (DateTime)value; 

     return new ValidationResult(orderDate < DateTime.Now, "Please, enter date before Now()"); 
    } 
} 

,那麼你可以將它連接到日期選擇器

<!-- since validation works hand by hand with binding, 
     I use hidden datepicker as binding source --> 
    <WPFToolkit:DatePicker Name="dateProvider" Visibility="Collapsed"> 
    </WPFToolkit:DatePicker> 

    <WPFToolkit:DatePicker Name="notExpired"> 
     <WPFToolkit:DatePicker.SelectedDate> 
      <Binding ElementName="dateProvider" Path="SelectedDate" UpdateSourceTrigger="PropertyChanged"> 
       <Binding.ValidationRules> 
        <local:DateExpiredRule/> 
       </Binding.ValidationRules> 
      </Binding> 
     </WPFToolkit:DatePicker.SelectedDate> 
    </WPFToolkit:DatePicker> 

當發生驗證錯誤時指定控制模板。默認情況下,驗證錯誤更改邊框顏色鼠標結束控制時,我使用了額外的工具提示。

alt text

source code

關於 '選擇器選取器' 驗證。

我知道,一個可以驗證規則使用自定義屬性(見AgeRangeRule在msdn例子)

也許你應該使用此功能,這樣

<local:MaxDateRule MaxDate="{Binding ElementName=DepartureDatePicker, Path=SelectedDate" /> 

但爲了申請綁定,您需要讓MAXDATE一個DependencyProperty ..你應該definetly問大師;)

而是強調你應該考慮攔截日期選擇價值變動(通過某種日期選擇器的「的onchange」事件)和accep的或拒絕改變。

+0

非常感謝您的回覆。我有一個問題,我應該如何驗證日期選擇器中的日期。例如,我有抵達日期日期選擇器和出發日期日期選擇器。我應該如何驗證這兩項,以便抵達日期總是小於(之前),出發日期? – developer 2010-04-12 14:26:10