Question

I am not able to use EventToCommand in my Windows Phone 8.1 App.

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WP8"

I tried it also with assembly=GalaSoft.MvvmLight.Extras.WP81...

<controls:PivotItem Name="pivotItem">
<i:Interaction.Triggers>
    <i:EventTrigger EventName="SelectionChanged">
        <cmd:EventToCommand Command="{Binding SelectServiceCommand}"
                            CommandParameter="{Binding SelectedIndex,                                 ElementName=pivotItem}"/>
    </i:EventTrigger>
    <!-- other stuff  -->
</i:Interaction.Triggers>

I get the following erros:

  • The member "Triggers" is not recognized or is not accessible.
  • Unknown type 'EventTrigger' in XML namespace 'clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity'
  • Error 2 The attachable property 'Triggers' was not found in type 'Interaction'. ...

Can someone help me please?

Was it helpful?

Solution

Are you aiming at Silverlight, or WinRT (Universal Apps) kind of Windows Phone 8.1?

If you have chosen the second option, then in this blog post MVVM Light author explains the lack of support for EventToCommand - basically in WinRT there's already a mechanism similiar to the EventToCommand - Behaviours.

OTHER TIPS

Windows Phone 8.1

Windows 8.1 Behavior SDK: How to use InvokeAction with InputConverter to pass arguments to a Command

Microsoft has developed it's own EventToCommand functionality. It's located in Behaviors SDK. Someone on stackoverflow told to get this SDK via Nuget. If you can't find the package in NuGet - get it in Add reference dialog.

enter image description here (My "Add reference" dialog may differ from original because of Productivity Power Tools extension)

Here is example of simple usage:

<ListBox ItemsSource="{Binding Persons, Mode=OneWay}" 
         SelectedItem="{Binding SelectedPerson, Mode=TwoWay}">
    <interactivity:Interaction.Behaviors>
        <core:EventTriggerBehavior EventName="SelectionChanged">
            <core:InvokeCommandAction Command="{Binding DisplayPersonCommand}" />
        </core:EventTriggerBehavior>
    </interactivity:Interaction.Behaviors>
</ListBox>

When upgrading my WP8.0 app to use MVVMLight 5.0+ disabled the EventToCommand behavior, my search for a solution brought me to this blog post that provided source code for implementing a Custom Command Action that will pass the event args as the parameter. Implementing the code returned my app to working order!!

Hopes this helps you out :D

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top