Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight MVVM灯光-使用ViewModelLocator-属性多次命中_Silverlight_Silverlight 4.0_Mvvm Light - Fatal编程技术网

Silverlight MVVM灯光-使用ViewModelLocator-属性多次命中

Silverlight MVVM灯光-使用ViewModelLocator-属性多次命中,silverlight,silverlight-4.0,mvvm-light,Silverlight,Silverlight 4.0,Mvvm Light,我正在使用MVVM Light ViewModelLocator。我有一个名为GlobalViewModelLocator的类,它连接在App.Xaml的参考资料中。此类具有名为Main的静态属性,该属性返回MainViewModel的实例 然后在MainView.Xaml中,我将usercontrol的datacontext设置为绑定到此MainViewModel的路径。这很好——我在MainViewModel构造函数上设置了一个断点,并且只命中了一次。但是,由于MainViewModel中控

我正在使用MVVM Light ViewModelLocator。我有一个名为GlobalViewModelLocator的类,它连接在App.Xaml的参考资料中。此类具有名为Main的静态属性,该属性返回MainViewModel的实例

然后在MainView.Xaml中,我将usercontrol的datacontext设置为绑定到此MainViewModel的路径。这很好——我在MainViewModel构造函数上设置了一个断点,并且只命中了一次。但是,由于MainViewModel中控件上的事件触发器而设置的ViewModel中的所有属性将被命中三次。有人知道为什么会这样吗

以下是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>
...

...
...

在本例中,MediaOpenedCommand被命中三次。知道为什么吗?

我发现它被点击三次的原因是因为该特定视图在不同的XAML页面中被引用了三次


谢谢

你能发布你的GlobalViewModelocator课程的代码吗?您使用的是MEF还是Unity(或其他)?