Wpf MenuItem上的绑定CommandParameter为空

Wpf MenuItem上的绑定CommandParameter为空,wpf,binding,menuitem,icommand,commandparameter,Wpf,Binding,Menuitem,Icommand,Commandparameter,我不明白为什么我的commandparameter在所有其他绑定都正常工作、显示正确的图像、文本正确并且调用了命令CanExecute时为null,但由于某种原因,该参数为null <MenuItem Header="Open Recent" ItemsSource="{Binding Path=MRU}"> <MenuItem.ItemContainerStyle>

我不明白为什么我的commandparameter在所有其他绑定都正常工作、显示正确的图像、文本正确并且调用了命令CanExecute时为null,但由于某种原因,该参数为null

                <MenuItem Header="Open Recent" ItemsSource="{Binding Path=MRU}">
                <MenuItem.ItemContainerStyle>
                    <Style TargetType="MenuItem">
                        <Setter Property="Command" Value="{Binding Command}" />
                        <Setter Property="CommandParameter" Value="{Binding URI}" />
                        <Setter Property="Header" Value="{Binding URI}" />
                        <Setter Property="Icon">
                            <Setter.Value>
                                <Image Source="{Binding URIImage}" />
                            </Setter.Value>
                        </Setter>
                    </Style>
                </MenuItem.ItemContainerStyle>
            </MenuItem>
命令的CanExecute如下所示:

        public bool CanExecute(object parameter)
    {
        return parameter != null && parameter is string; // <---parameter is null
    }

您是否尝试过在绑定中查找祖先?我认为您的头显示正确吗?是的,头显示正确,就像图像一样,并且执行了命令,但是参数为null,我知道这是不正确的,因为头显示正确。然后使用头,即{Binding Path=header,RelativeSource={RelativeSource Self}。HTHI确实找到了一个解决方法,即,我只是将url传递到Save命令的构造函数中,并查看参数是否为null,但现在我很好奇为什么这个方法不起作用。这是一个已知的问题
        public bool CanExecute(object parameter)
    {
        return parameter != null && parameter is string; // <---parameter is null
    }