Question

I have a collection of views and I would like to be able to call a method on the view in response to an event raised in the ViewModel.

I am currently using a ItemsControl with a DataTemplate but this does not give me an opportunity to intercept the View and ViewModel and wire them up. Is there a container that is better suited for this?

Was it helpful?

Solution

From:

    xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
    xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"   

User : Source Object is your ViewModel.

   <UserControl>
        <i:Interaction.Triggers>
            <i:EventTrigger SourceObject="{Binding}" EventName="YourEvent">
                <ei:CallMethodAction MethodName="YourMethod"/>
            </i:EventTrigger>
        </i:Interaction.Triggers>
    </UserControl>

If you place it in a scope of another element then your view (UserControl) add

 <ei:CallMethodAction MethodName="YourMethod" TargetObject="{Binding ElementName=yourUserControl}"/> 
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top