我知道如何在我的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?
答案 0 :(得分:1)
我拿了你的控制代码并试了一下,得到的控件和我添加的控件一样多。
我做了一个简单的&#39; for&#39;循环初始化添加了几个控件。 我尝试从一个主视图模型设置datacontext,并为每个控件分别设置视图模型,两次尝试都正常。
显然正在调用命令。因此命令绑定显然存在问题。尝试查看其他控件的datacontext集,或者在第一次调用后更改viewmodel(如果它们共享一个viewmodel实例)。