Monthly Archives: October 2012

Messenger en MVVM Light? ¡Cuidado con los mensajitos!

Si una vista coge un mensaje y luego se cierra, DESREGISTRA LA VISTA! porque si no lo haces, se queda recibiendo mensajines everytime Risa y es muy muy jodido de encontrar la razón.

Aquí está lo que hay que hacer, fiery man:

public NewDocumentDialog()

       {

           InitializeComponent();

           Unloaded += (sender, args) => Messenger.Default.Unregister<QDFPage>(this);

 

           Messenger.Default.Register<QDFPage>(this, OnMessageReceived);   

       }

 

       private void OnMessageReceived(QDFPage page)

       {

           SetPage(page);

           DialogResult = true;

       }

 

Y esto de más abajo es la respuesta que no me han dejado publicar en StackOverflow… que quede aquí reflejada: http://stackoverflow.com/questions/7036873/when-to-dispose-viewmodel-in-mvvm-light

Thanks, thanks a lot! I was using a widow with ShowDialog. This view has a viewmodel that communicates success using the Messenger. When opened the second time, when setting the DialogResult = true, it stated “DialogResult can be set only after Window is created and shown as dialog.”

The fact is that I the older instances of the window didn’t unregister from the Messenger! They were still receiving messages! show the attempts to set their DialogResult failed, logically.

It was hard to find, but it’s FIXED!

EventToCommand

 

<i:Interaction.Triggers>

       <i:EventTrigger EventName="MouseEnter">

           <cmd:EventToCommand Command="{Binding TestCommand,

                                         Mode=OneWay}"

              CommandParameter="{Binding Text,

                                 ElementName=MyTextBox,

                                 Mode=OneWay}"

              MustToggleIsEnabledValue="True" />

       </i:EventTrigger>

   </i:Interaction.Triggers>

Después de todo, temporary failure!

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/23072c67-b024-4e62-b587-0e494b1d438a

Ahí queda la razón de mi retraso: no tengo ni idea de cómo transformar la idea en un Custom Control con sus Items y SubItems.

Todo esto es para la barra de herramientas. Me kagun! Al final no lo hice con las propiedades adjuntas que publiqué ayer.

Pues no, esto no fue la solución. Pero sí que lo hice finalmente con un Behavior (son la pera).