2010-09-30 9 views
0

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?

+1

Pourriez-vous poster le code pour votre classe GlobalViewModelLocator? Utilisez-vous MEF ou Unity (ou autre)? –

Répondre

1

J'ai trouvé la raison pour laquelle il est touché trois fois parce que cette vue particulière est référencée trois fois à partir de différentes pages XAML.

Merci