2009-09-17 11 views
6

Imagínese esto: usted tiene una ventana Master-infantil que consiste en una lista de elementos (la ventana principal) y un conjunto de controles donde se puede editar el elemento seleccionado en ese momento (la Ventana del Niño). La ventana secundaria tiene los botones "Aplicar" y "Cancelar".WPF: detener o revertir un cambio de selección en un cuadro de lista

Un usuario comienza a editar valores. Luego cambia la selección, antes de presionar el botón "Aplicar".

la aplicación muestra un mensaje "Aplicar cambios al elemento actual?", Con los botones de ser "Sí", "No" y "Cancelar". Si el usuario presiona "Cancelar", el intento de cambiar la selección actual debería fallar.

El elemento "CurrentSelection" está enlazado a datos.

pensé que podría hacer frente a esto en la parte de "incubadora" de la propiedad CurrentSelection. Si el usuario selecciona "Cancelar", simplemente guardo el elemento CurrentSelection tal como está, y desencadenar un evento de notificación PropertyChanged para decirle al formulario que actualice de nuevo al elemento seleccionado anterior. El control está ignorando este evento de notificación. (Lo cual tiene sentido, el control está diciendo "Sé que la selección actual ha cambiado. Acabo de cambiar él!")

Alguna idea de cómo solucionar este problema? En resumen, el control intenta cambiar el límite SelectedItem, y quiero decir "No, no puede cambiar este elemento seleccionado en este momento".

Respuesta

1

Sólo un pensamiento sin haber probado: intentar provocar el evento de propiedad cambiada en un mensaje aparte. La lista probablemente tenga un seguro para ignorar cualquier notificación mientras está cambiando el valor de la propiedad. Si envía un mensaje separado que contiene la notificación, el enganche debe reiniciarse y debe manejarlo.

Cuestiones relacionadas