2011-03-27 12 views
5

¿Cómo puedo vincular la propiedad IsEnabled en Silverlight 4 (XAML)?¿Cómo puedo vincular la propiedad IsEnabled de ContextMenu en Silverlight 4?

Intenté simplemente IsEnabled="{Binding ABC}" pero esto no está funcionando - el MenuItem siempre está habilitado.

¡Gracias de antemano por las pistas!

Saludos

Editar:

Lo que es interesante, al establecer los enlaces Mode=TwoWay parecen funcionar. Sin embargo, la apariencia del menú contextual se actualiza después de mover el mouse sobre un elemento del menú. ¿Eso está funcionando de manera asíncrona? ¿Cuál es la forma de actualizar el diseño de mi menú contextual justo después de hacer clic derecho? (Probé con UpdateLayout() pero no funcionó)

+0

¿Qué es ABC, es una propiedad en el modelo de vista o está intentando vincularse a otra cosa. Si está en el modelo de vista, ¿dónde está cambiando ABC y notificando la vista? –

+0

@Wes, sí, así es exactamente como ha escrito. – Jamie

Respuesta

6

De acuerdo, es un error conocido en Silverlight Toolkit: el aspecto del menú contextual no cambia aunque la propiedad IsEnabled esté enlazada y se notifique correctamente. Tuve que implementar una solución (simple actualización de la vista del control). De todos modos, gracias por las respuestas :)

+0

Tengo el mismo problema: ¿cómo se actualiza la vista del control? – Calanus

+2

ok, contextMenu1.InvalidateArrange() funcionó en el evento abierto del menú contextual – Calanus

1

Una buena forma de solucionar este problema es echar un vistazo a la Ventana de resultados mientras se depura con Visual Studio. Los problemas con los enlaces están impresos allí.

¿Ha configurado su DataContext a un objeto que tiene una propiedad pública ABC?

+0

Observé que cuando establezco el modo (TwoWay), el enlace parece funcionar. Sin embargo, el aspecto de un elemento del menú no cambia (hasta que muevo el cursor sobre él). ¿Tienes alguna idea? – Jamie

+0

¿La propiedad en el modelo de vista es una propiedad de dependencia o implementa INotifyPropertyChanged en su modelo de vista? es decir, ¿cómo está notificando la vista cuando cambia IsEnabled? –

+0

Implementé INotifyPropertyChanged. – Jamie

Cuestiones relacionadas