J'utilise MVVM Light ViewModelLocator. J'ai une classe appelée GlobalViewModelLocator qui est connectée dans les ressources dans le App.Xaml. Cette classe a une propriété statique appelée Main qui renvoie une instance de MainViewModel.MVVM Light - using ViewModelLocator - propriétés atteintes plusieurs fois
Ensuite, dans MainView.Xaml, j'ai défini le paramètre datacontext de la commande usercontrol sur le chemin de ce MainViewModel. Cela fonctionne bien - j'ai mis un point d'arrêt sur le constructeur MainViewModel et il est frappé une fois. Toutefois, toutes les propriétés dans le ViewModel qui sont définies à la suite de déclencheurs d'événement sur les contrôles dans le MainViewModel sont frappées trois fois. Est-ce que quelqu'un sait pourquoi cela pourrait se produire?
Voici un échantillon du code dans le MainView.Xaml:
<UserControl.DataContext>
<Binding Path="Main" Source="{StaticResource Locator}"/>
</UserControl.DataContext>
<Grid x:Name="LayoutRoot" Background="#FF292929">
...
<MediaElement Stretch="Fill" AutoPlay="False" Name="mediaElement">
<MediaElement.Style>
<Style TargetType="MediaElement">
<Setter Property="OpacityMask" Value="Black"/>
</Style>
</MediaElement.Style>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<i:InvokeCommandAction Command="{Binding MediaOpenedCommand}" CommandParameter="{Binding ElementName=mediaElement, Mode=OneWay}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</MediaElement>
...
Dans ce cas, le MediaOpenedCommand est frappé trois fois. Une idée pourquoi?
Pourriez-vous poster le code pour votre classe GlobalViewModelLocator? Utilisez-vous MEF ou Unity (ou autre)? –