Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更改了ContentControl的WPF InvokeCommandAction_C#_Wpf_Mvvm - Fatal编程技术网

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
属性时调用视图模型中的命令。

是否可能是您有错误的/没有数据上下文?还是失败背后的代码?请在后面分享你的代码。