0
我刚写了一个使用wpf的小游戏。有一个我可以点击的单元矩阵。点击事件正在通过DelegateCommand进行。问题在于未调用canexecute方法。我总是必须先点击窗口的某个地方。 我,因为我是用这个从来没有与我的commandclass问题:WPF Command-Canexecute-Revalidation
event EventHandler ICommand.CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
我也试着拨打CommandManager.InvalidateRequerySuggested();但这也行不通。 如果允许单击它的当前用户是我的电脑的本地用户(它是多人游戏),单元格可以点击。所以我在从网络获得我现在是“currentplayer”的消息后,调用了InvalidateRequerySuggested。
private void SetTurn(TurnMessage message)
{
CurrentPlayer = GetPlayer(message.PlayerID);
System.Windows.Input.CommandManager.InvalidateRequerySuggested();
}
这将有这样的影响:
public bool HasTurn
{
get { return CurrentPlayer != null && CurrentPlayer.PlayerID == Player.PlayerID; }
}
我的命令能,执行这样的容貌:
private bool CanMatrixClick(Object param)
{
return Main.PlayerViewModel.HasTurn;
}
所以有没有人对这个问题的一个清洁,简单的解决方案? 我真的找不到任何我没有尝试过的东西。
我也试过这样。我真的不知道为什么。我用mvvm编写了大型项目,而且这些类没有任何问题。 – 2013-02-17 21:14:03
我发现了这个问题,但我没有解决方法:命令中没有CanExecuteChanged-Event的Eventhandler。如果我调用InvalidateRequerySuggested(),也没有结果。但我不知道为什么。 – 2013-02-17 21:38:53