Question

Je faisant usage de la lumière MVVM ViewModelLocator. J'ai une classe appelée GlobalViewModelLocator qui est accroché dans les ressources du app.xaml. Cette classe a une propriété statique appelée Main qui renvoie une instance de la MainViewModel.

Ensuite, dans le MainView.Xaml, je mets la datacontext du usercontrol pour se lier au chemin de ce MainViewModel. Cela fonctionne très bien - je mets un point d'arrêt sur le constructeur de MainViewModel et il est frappé une fois. Cependant, toutes les propriétés du ViewModel qui sont fixés à la suite des déclencheurs d'événements sur les contrôles au sein de l'MainViewModel sont en cours trois fois coup. Est-ce que quelqu'un sait pourquoi cela pourrait se produire?

Voici un exemple 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. Toute idée pourquoi?

Était-ce utile?

La solution

J'ai trouvé la raison pour laquelle il devient frappé trois fois parce que ce point de vue particulier est fait référence à trois reprises à partir de différentes pages XAML.

Merci

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top