Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Windows Phone 8.1 - MVVMLight - Why is EventToCommad not working?

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?

like image 445
DominikP Avatar asked Apr 29 '14 09:04

DominikP


3 Answers

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.

like image 175
Malutek Avatar answered Nov 19 '22 01:11

Malutek


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>
like image 3
opewix Avatar answered Nov 19 '22 01:11

opewix


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

like image 1
James Porter Avatar answered Nov 19 '22 02:11

James Porter