UserControl的EventTrigger没有为多个子UserControls中的第二个触发

时间:2014-07-04 13:55:49

标签: wpf xaml mvvm eventtrigger

我知道如何在我的View加载时在我的ViewModel中调用一个Command:

<UserControl x:Class="TestApp.Views.MyUserControl"
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Loaded">
            <i:InvokeCommandAction Command="{Binding OnLoadedCommand}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</UserControl>

这很好用。

但是,我有一个父控件,我将这些UserControl放入其中。这是动态发生的,即我在需要时添加一个新的UserControl(用户操作)。

我的问题是OnLoadedCommand在我第一次添加UserControl时执行,但在后续添加中不再执行。如果我删除所有UserControl并重新添加,则会发生同样的事情:为第一个UserControl执行,不再为任何后续UserControl执行。

如何分别为每个UserControl调用我的ViewModel?

1 个答案:

答案 0 :(得分:1)

我拿了你的控制代码并试了一下,得到的控件和我添加的控件一样多。

我做了一个简单的&#39; for&#39;循环初始化添加了几个控件。 我尝试从一个主视图模型设置datacontext,并为每个控件分别设置视图模型,两次尝试都正常。

显然正在调用命令。因此命令绑定显然存在问题。尝试查看其他控件的datacontext集,或者在第一次调用后更改viewmodel(如果它们共享一个viewmodel实例)。