所以我的其他按钮在同一个视图和视图模型中以相同的方式操作,工作正常。
然而,这个恰好位于上下文菜单中,却没有。即使我将命令绑定更改为我知道不存在的东西,也没有任何绑定表达式错误,我发现它非常有趣
XAML
public ICommand SaveImageCommand { get; set; }
SaveImageCommand = new CommandHandler(SaveImageExecuted, true);
private async void SaveImageExecuted()
{
}
C#
public class CommandHandler : ICommand
{
private Action _action;
private bool _canExecute;
public CommandHandler(Action action, bool canExecute)
{
_action = action;
_canExecute = canExecute;
}
public bool CanExecute(object parameter)
{
return _canExecute;
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
_action();
}
}
我的命令处理程序
class Index extends CI_Controller
答案 0 :(得分:1)
所以我很确定这是框架中的错误。
要解决这个问题,我决定只使用一个click处理程序来调用viewmodel中执行的命令。超级janky,但它的工作原理。
XAML
<MenuFlyoutItem Text="Save Image" Icon="Save" Click="OnSaveContextMenuClicked"/>
代码背后
private void OnSaveContextMenuClicked(object sender, RoutedEventArgs e)
{
viewModel.SaveImageCommand.Execute(sender);
}
答案 1 :(得分:1)
我也找到了另一种解决方法。 如果使用x:Bind而不是Binding设置MenuFlyoutItem Command属性,则只要MenuFlyout具有x:Name即可。
<MenuFlyout x:Name="MyMenuFlyout">
<MenuFlyoutItem Text="Save Image" Icon="Save" Command="{x:Bind SaveImageCommand}"/>
</MenuFlyout>