none
Validación de Datos RRS feed

  • Pregunta

  • Tengo una ventana de WPF, en ella un TabControl con varios TabsItems, dentro de los tabítems, Textbox Bindiados  a cada propiedad que le corresponde y asociados a sus reglas de validación en su enlace.

    Cuando doy de alta un registro nuevo, aparecen los mensajes de error de forma correcta, pero si cambio de Tabítem y regreso al anterior donde aparecía el error visual, éste ya no se ve.

    No encuentro qué hacer para observar los errores que tenía nuevamente.

    Observen:

    Agradecería cualquier pista, para lograr que siempre aparezca el cuadro de error, aunque cambie de Tabitem.

    Saludos Cordiales...

    (Imagen 1) Se ve el cuadro rojo (si pongo el puntero del Mouse, se abre el mensaje correspondiente)(Fig. 2) Cambio de Tab.- En éste no manejo errores son opcionales(Figura 3).- Regreso al Tab 1(empresa), visualmente no se observa el cuadro rojo con el error

    martes, 19 de enero de 2016 8:00

Todas las respuestas

  • hola

    Implementas las validacines mediante DataAnnotations? o sea como atributos de las propeidades que bindeas

    Validation in MVVM using Data Annotations

    quizas debas usar la clase Validator para validar si la view IsValid de forma manual, forzando de esta forma a que vuelvan aparecer las validaciones

    Manual Validation with Data Annotations

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 19 de enero de 2016 10:40
  • Hola Ricardo Colli, debes tener en cuenta que al cambiar entre Tabs los controles se vuelven a redibujar, es por eso que pierdes la validación de tus controles. No sé si los datos también (creo que los datos ingresados no se borran).

    En la definición de tu TabItem en XAML (sea en duro o mediante Template) debes agregar un AdornerDecorator, algo así:

    <TabItem Header="Empresa">
        <Border>
            <AdornerDecorator>
                <Grid>
                    <TextBox Height="35" >
                        <TextBox.Text>
                             <Binding Path="TU_PROPIEDAD_BINDING" UpdateSourceTrigger="PropertyChanged">
                                 <Binding.ValidationRules>
                                     <vr:TU_VALIDATION_RULE_SI_TIENES />
                                 </Binding.ValidationRules>
                              </Binding>
                          </TextBox.Text>
                      </TextBox>
                  </Grid>
              </AdornerDecorator>
          </Border>
      </TabItem>

    Más detalle de la solución aquí (en inglés).

    Espero resulte útil.

    Saludos


    Christian Amado
    Software Engineer | MCPD: Windows Phone Developer | MCTS: Silverlight Developer
    Don't forget to mark the right answer and vote up if helps you.
    My Blog
    My code samples

    martes, 19 de enero de 2016 11:57
  • Con el fin de no tocar las clases que resultan de la plantilla  T4, me decidí por usar el método de IDataErrorInfo.

    Intente hacer algo con Data Annotations, pero me revolví un poco.

    Valido tus sugerencias y te comento...

    Gracias Leandro, un afectuoso saludo.
    martes, 19 de enero de 2016 20:56
  • Hola Christian:

    Si tengo implementado el adorno que me sugieres, y efectivamente no se borran los datos al cambiar el Tab.

    Lo que busco es identificar si al regresar el Tab, puedo "golpear" el UpdateSourceTrigger, para provocar que aparezca nuevamente el adorno.

    Gracias por tu aportación e interés, Saludos.
    martes, 19 de enero de 2016 21:08