2010-04-09 23 views
7

¿Cómo aplicar las validaciones al WPF datepicker toolkit? Quiero que se produzca un error si se selecciona una fecha no válida y, en algún caso, tengo fechas de Llegada y Salida, por lo que quiero validar que la fecha de llegada no sea posterior a la fecha de salida.Validación del selector de fecha WPF

Respuesta

6

Parece un año anterior a la validación del selector de fecha was a problem. De todos modos, ahora funciona.

No soy un especialista en WPF, bu Voy a tratar de darle una idea

escribir una regla de validación

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()"); 
    } 
} 

a continuación, puede adjuntarlo a selector de fechas

<!-- 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> 

especificar la plantilla de control cuando se produce un error de validación Por defecto, el error de validación cambia el color del borde. Usé información sobre herramientas adicional cuando el mouse está por encima del control.

alt text

source code

sobre 'selector de picker' validación.

sé que uno puede utilizar las propiedades personalizadas en las reglas de validación (ver AgeRangeRule en msdn ejemplo)

tal vez debería utilizar esta función como esta

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

pero con el fin de aplicar la unión lo que necesita hacer que MaxDate sea una DependencyProperty ... definitivamente debería preguntarle a un gurú;)

En lugar de resaltar, debería considerar interceptar el cambio de valor del datepicker (a través de algún tipo de evento datepicker 'onchange) y aceptar t o rechazar el cambio.

+0

Muchas gracias por su respuesta ... Tenía una pregunta, ¿cómo debo validar las fechas en 2 fechadores? Por ejemplo, tengo fecha de llegada datepicker y fecha de salida datepicker. ¿Cómo debo validar estos dos para que la fecha de llegada sea siempre menor que (antes), la fecha de salida? – developer

Cuestiones relacionadas