2009-03-10 8 views
5

Si tengo un formulario de datos, ¿cómo sé si un usuario lo ha modificado (ya sea escribiendo texto en un cuadro de texto o seleccionando un elemento en un cuadro combinado)? Intenté conectarme al evento "TextChanged" de mi cuadro de texto, pero el problema es que, cuando mi formulario participa en el enlace de datos, el evento "TextChanged" se dispara y marca prematuramente mi formulario como "sucio".¿Cómo puedo marcar un formulario/campo como "sucio" si está enlazado a datos?

Respuesta

3

intento implementar

public partial class Window1 : INotifyPropertyChanged 

y luego

public event PropertyChangedEventHandler PropertyChanged; 

public string UserName 
{ 
    get { return _UserName; } 
    set { if (value != _UserName) 
    { 
     _UserName = value; 
     OnNotifyPropertyChanged("UserName"); 
    }} 
} 

private void OnNotifyPropertyChanged(string property) 
{ 
    if (PropertyChanged != null) 
    PropertyChanged(this, new PropertyChangedEventArgs(property)); 
} 

y databind como

<TextBox Text="{Binding UserName}"/> 
+0

Mejora mínima: puede reducir la anidación haciendo en su lugar: if (value == _UserName) return; Reduce un poco el desorden visual. –

0

La primera vez que visualiza la página, almacena los valores del formulario en una matriz, cuando se activa el evento TextChanged, compáralo con lo que ya tienes, si es diferente.

1

¿Su clase de modelo implementa INotifyPropertyChanged? De ser así, podría agregar un controlador para el evento PropertyChanged en la clase y observar si la propiedad en cuestión cambia.

Si no ha implementado INotifyPropertyChanged, ¿tal vez el mecanismo que está utilizando para notificar a la capa de interfaz de usuario de las actualizaciones podría utilizarse aquí también?

Cuestiones relacionadas