Peter Marshall
Peter Marshall

Reputation: 1355

WP71 MVVMLight EventTrigger not recognised

Having followed Laurent's upgrade guide http://www.galasoft.ch/mvvm/installing/mangobeta/ to get from an existing MVVMLight WP7 project to a WP71 project. I have changed the references and namespaces corectly. But the EventTrigger is not recognised in the XAML

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
    <i:Interaction.Triggers>

        <i:EventTrigger EventName="Loaded">
            <cmd:EventToCommand 
                Command="{Binding Mode=OneWay, Path=LoadedCommand}"
                 PassEventArgsToCommand="True" />
        </i:EventTrigger>
    </i:Interaction.Triggers>

I get an error on the EventTrigger element.

Has it changed?

Upvotes: 3

Views: 1022

Answers (3)

Steve
Steve

Reputation: 7867

I had this exact same problem when I upgrade my application from WP7 to WP7.1(Mango). The problem was the MVVM Light Binaries. You need to upgrade to the WP7.1 Binaries.

Laurent Bugnion ( https://stackoverflow.com/users/12233/lbugnion ) explains how to upgrade the MVVM Light binaries on his website here: http://www.galasoft.ch/mvvm/installing/mangobeta/

These are the essential steps I used to fix my problem:

  • Download the most recent version from here.

  • Open and Compile the WP71 project.

  • Copy the binaries to your MVVM Binary location (in my case C:\Program Files\Laurent Bugnion (GalaSoft)\Mvvm Light Toolkit\Binaries)

  • Open your project

  • In the References folder, delete GalaSoft.MvvmLight, GalaSoft.MvvmLight.Extras and System.Windows.Interactivity.

  • Add the new references from the folder C:\Program Files\Laurent Bugnion (GalaSoft)\Mvvm Light Toolkit\Binaries\WP71.

Upvotes: 2

Peter Marshall
Peter Marshall

Reputation: 1355

I have moved on from this issue, by reverting back to pre-mango dev environment. Not the solution I wanted, but - onwards and forwards.

Upvotes: 0

Echilon
Echilon

Reputation: 10264

I had a similar problem after upgrading to Mango. In my case, I had the EventToCommand binding on a MenuItem click, but you seem to have it on some sort of loaded event. You could try using an anonymous delegate in the loaded evcent from the view's code-bhind. Ie:

this.Loaded+=(s,e)=>ViewModel.LoadedCommand.Execute(null);

In my case, I changed from:

<tk:MenuItem Header="Delete Snapshot" >
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Click">
            <mvvmLight:EventToCommand Command="{Binding DeleteSnapshotCommand, Mode=OneWay}" CommandParameter="{Binding SelectedItem,ElementName=lstSnapshots}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</tk:MenuItem>

to

<tk:MenuItem Header="Delete Snapshot" Command="{Binding DeleteSnapshotCommand, Mode=OneWay}" CommandParameter="{Binding SelectedItem,ElementName=lstSnapshots}" />

Upvotes: 1

Related Questions