2009-10-20 11 views
7

que tiene un área de entrada de texto se define así:programación cambio de reglas de validación en WPF cuadro de texto

<TextBox> 
     <TextBox.Text> 
      <Binding Path="MyProperty"> 
       <Binding.ValidationRules> 
        <valid:MyValidator/> 
       </Binding.ValidationRules> 
      </Binding> 
     </TextBox.Text> 
    </TextBox> 

Mi problema es que, dependiendo de otro entorno, lo que se supone que debe ser insertado aquí varía. Y, por lo tanto, el comportamiento de validación de los datos de entrada debería cambiar.

¿Cómo puedo en el código de atrás cambiar la regla de validación activa para un cierto cuadro de texto?

+0

con un convertidor? – Natrium

+0

Pensé que los convertidores estaban más orientados a cambiar (convertir) los datos entrantes? Quiero reemplazar por completo la regla de validación activa, sin cambiar la entrada que dio el usuario. – Mizipzor

Respuesta

19

Utilice BindingOperations.GetBinding() para obtener el objeto Binding para TextBox.Text. Luego manipule la colección ValidationRules del enlace como mejor le parezca.

Binding binding = BindingOperations.GetBinding(myTextBox, TextBox.TextProperty); 
binding.ValidationRules.Clear(); 
binding.ValidationRules.Add(myCrazyValidationRule); 
+0

Esto parece ser exactamente lo que quiero, lo probaré y volveré a aceptar su respuesta. :) – Mizipzor

+2

@itowlson ¿Tienes alguna idea de hacer esto en XAML siguiendo el patrón MVVM? – RobinAtTech

+0

Me gustó ese toque humorístico "myCrazyValidationRule" – Tarik

1

La solución más hacky que viene a la mente es definir un cuadro de texto para cada una de las reglas de validación que deben ser capaces de establecer. Enlace un cuadro de texto a cada una de las reglas de validación. Luego, dependiendo de la configuración/condición externa, contraiga/oculte todos los cuadros de texto excepto el que tiene la regla de validación que se debe aplicar.

+0

Esta es una excelente solución, ¿por qué tienes alguna idea de usarla en el modelo de MVVM? – RobinAtTech

Cuestiones relacionadas