我有一个BottomAppBar.AppBarButton
在 Windows Phone 特定页面中,该页面绑定到中继命令。代码、绑定和视图模型实现都以基本相同的方式在项目的其他页面上使用,并且完全按照预期工作。
此特定场景中的问题是,即使在抬起按钮后,该按钮仍保持禁用状态。.RaiseCanExecuteChanged()
方法,以及CanExecute()
回报true
.
我最初认为这可能是由于过度调用手动引发带有属性更改的通知,因此收紧了我的代码的这一部分,以便仅在需要时以及需要更改按钮状态时引发该方法。尽管如此,该按钮仍然处于禁用状态CanExecute()
返回true
。
如果我注释掉所有检查CanExecute()
默认为 true,按钮按预期启用,点击时会触发预期的Execute()
函数,所以看起来初始化RelayCommand
没问题。如果我然后让检查回来,并每次都运行单步执行CanExecute()
被触发,当它返回 true 时,该按钮不会变为启用状态。
有任何想法吗?就其价值而言,我在下面添加了代码,但我不认为这是原因。
RelayCommand
class是VS中HubApp自带的标准类,所以我就省略那段代码了。
视图模型构造函数的最后一行是 RelayCommand;
AddStrikeTeamCommand = new RelayCommand(async() => await AddStrikeTeam(), CanAddStrikeTeam);
可以添加的是;
private bool CanAddStrikeTeam()
{
//if (NameWorking == string.Empty) return false;
//if (FactionWorking == string.Empty) return false;
//if (PointsLimitWorking < 1) return false;
//if (!IsValidTeamWorking) return false;
return true;
}
最后,按钮绑定
<AppBarButton x:Name="accept" Icon="Accept" Label="accept"
Command="{Binding AddStrikeTeamCommand}"/>