我有一个内容控件:
<ContentControl Content="{Binding PageViewModel}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="ContentChanged">
<i:InvokeCommandAction Command="{Binding MyCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</ContentControl>
每次PageViewModel更改时我都需要调用MyCommand。
但是命令没有被触发。
这可能吗?
答案 0 :(得分:1)
您应该在PageViewModel
属性的设置器中处理此问题:
private object pageViewModel;
public object PageViewModel
{
get { return pageViewModel; }
set
{
pageViewModel = value;
OnPropertyChanged();
MyCommand.Execute(null);
}
}
ContentControl
没有ContentChanged
个事件。它有一个受保护的OnContentChanged
方法,如果您创建自定义ControlControl
类,则可以覆盖该方法:
WPF: How to created a routed event for content changed?
您可以创建在此方法中引发的自定义事件。
但MVVM的做法是在设置PageViewModel
属性时调用视图模型中的命令。