Wpf MenuItem上的绑定CommandParameter为空
我不明白为什么我的commandparameter在所有其他绑定都正常工作、显示正确的图像、文本正确并且调用了命令CanExecute时为null,但由于某种原因,该参数为nullWpf 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>
<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
}