C# 更改了ContentControl的WPF InvokeCommandAction
我有一个内容控件:C# 更改了ContentControl的WPF InvokeCommandAction,c#,wpf,mvvm,C#,Wpf,Mvvm,我有一个内容控件: <ContentControl Content="{Binding PageViewModel}"> <i:Interaction.Triggers> <i:EventTrigger EventName="ContentChanged"> <i:InvokeCommandAction Command="{Binding MyCommand}"/> </i:Ev
<ContentControl Content="{Binding PageViewModel}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="ContentChanged">
<i:InvokeCommandAction Command="{Binding MyCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</ContentControl>
每次PageViewModel更改时,我都需要调用MyCommand
但是,不会触发该命令
可以这样做吗?您应该在
PageViewModel
属性的setter中处理此问题:
private object pageViewModel;
public object PageViewModel
{
get { return pageViewModel; }
set
{
pageViewModel = value;
OnPropertyChanged();
MyCommand.Execute(null);
}
}
ContentControl
没有ContentChanged
事件。它有一个受保护的OnContentChanged
方法,如果您创建一个自定义ControlControl
类,则可以重写该方法,不过:
可以创建在此方法中引发的自定义事件
但是MVVM实现这一点的方法是在设置了
PageViewModel
属性时调用视图模型中的命令。是否可能是您有错误的/没有数据上下文?还是失败背后的代码?请在后面分享你的代码。