Question: I have successfully converted event to method (for use in ViewModel) using **EventTriggerBehavior** and **CallMethodAction** as shown in the following example (here picked a Page **Loaded** event for illustration).

`<i:Interaction.Behaviors>
 <core:EventTriggerBehavior EventName="Loaded">
 <core:CallMethodAction TargetObject="{Binding Mode=OneWay}" MethodName="PageLoadedCommand"/>
 </core:EventTriggerBehavior>
</i:Interaction.Behaviors>`

However, no success when it comes to the **CurrentStateChanged** event of **VisualStateGroup** as shown below (yes, nested within the `<VisualStateGroup>` block as **CurrentStateChanged** event belongs to **VisualStateGroup**):

`<i:Interaction.Behaviors>
 <core:EventTriggerBehavior EventName="CurrentStateChanged">
 <core:CallMethodAction MethodName="CurrentVisualStateChanged" TargetObject="{Binding Mode=OneWay}"/>
 </core:EventTriggerBehavior>
</i:Interaction.Behaviors>`

I suspect there may be issues with VisualStateGroup (or VisualStateManager) and the **CurrentStateChanged** event. I am saying this because, I can get this approach to work with other events. I have checked and rechecked the **CallMethodAction** method signatures (event arguments passing format) but no chance.

If you managed to get **CurrentStateChanged** event triggering as above (or with an alternative approach), I would very much like to know.

Answer: 
> 
> However, no success when it comes to the CurrentStateChanged event of VisualStateGroup as shown below
> 
> 
> 

Yes, the EventTriggerBehavior won't work for VisualStateGroup.CurrentStateChanged event.

The feasible way is to create a **custom Behavior** that specifically targets this scenario, please see [this blog](https://marcominerva.wordpress.com/2014/07/29/a-behavior-to-handle-visualstate-in-universal-apps-with-mvvm/) wrote by **Marco Minerva**

This behavior can help us to monitor the current VisualStatus, in the Set method of custom property(ViewModelState type), calling method as you wish:

```
public class MainViewModel : ViewModelBase
{
        public enum ViewModelState
        {
            Default,
            Details
        }

        private ViewModelState currentState;
        public ViewModelState CurrentState
        {
            get { return currentState; }
            set
            {
                this.Set(ref currentState, value);
                OnCurrentStateChanged(value);
            }
        }

        public RelayCommand GotoDetailsStateCommand { get; set; }
        public RelayCommand GotoDefaultStateCommand { get; set; }

        public MainViewModel()
        {
            GotoDetailsStateCommand = new RelayCommand(() =>
            {
                CurrentState = ViewModelState.Details;
            });

            GotoDefaultStateCommand = new RelayCommand(() =>
            {
                CurrentState = ViewModelState.Default;
            });
        }

        public void OnCurrentStateChanged(ViewModelState e)
        {
            Debug.WriteLine("CurrentStateChanged: " + e.ToString());
        }
}

```

**Please check my completed sample on [Github](https://github.com/Myfreedom614/UWP-Samples/tree/master/MvvmVisualStatesBehaviorUWPApp1/MvvmVisualStatesBehaviorUWPApp1)**
Could be due to the latest SDK, and I managed to get it working with dynamic binding (for event to method pattern) as follows.

In XAML bind to `CurrentStateChanged` event as:

```
<VisualStateGroup CurrentStateChanged="{x:Bind ViewModel.CurrentVisualStateChanged}">

```

In ViewModel provide the CurrentStateChanged() method with CurrentStateChanged event signature as:

```
public void CurrentVisualStateChanged(object sender, VisualStateChangedEventArgs e)
{
    var stateName = e?.NewState.Name;  // get VisualState name from View
    ...
    // more code to make use of the VisualState
}

```

The above didn't work for me a while back, and now I tried after *VS2015 Update 2* and my suspicion is that the latest SDK got enhanced?? Whatever, it is good news that you can now get to VisualState names in view-model thru dynamic binding.