我正在使用MVVM Light ViewModelLocator。我有一个名为GlobalViewModelLocator的类,它连接在App.Xaml的资源中。该类有一个名为Main的静态属性,它返回MainViewModel的实例。
然后在MainView.Xaml中,我将usercontrol的datacontext设置为绑定到此MainViewModel的路径。这很好 - 我在MainViewModel构造函数上放了一个断点,它被击中一次。但是,ViewModel中由于MainViewModel中的控件上的事件触发而设置的所有属性都被命中三次。有谁知道为什么会发生这种情况?
以下是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被击中三次。知道为什么吗?
答案 0 :(得分:1)
我发现它被击中三次的原因是因为特定视图在不同的XAML页面中被引用了三次。
由于