在实现ICommand时,您必须实现public void Execute(object parameters)方法,该方法接受object类型的参数。
对于我的特定应用程序,我感兴趣的是如何实现以枚举作为参数的ICommand。
在我的命令中,我像这样实现了Execute:
public void Execute(object parameter)
{
if (parameter is null) throw new ArgumentNullException("parameter");
State s = parameter as State;
}其中,State是定义为
public enum State
{
NeutralState,
MeasureCircleState,
MeasureSphereState
}不幸的是,我的IDE标记我的代码,特别是行State s = parameter as State;无效。
我的密码怎么了?
我可以不把我的object parameter转换成枚举类型的State吗?
发布于 2022-05-20 11:09:10
对象参数可以转换为enum:
public void Execute(object parameter)
{
if (parameter is State s)
{
// do work;
}
else
{
throw new ArgumentException(nameof(parameter));
}
}您还应该从XAML正确地传递它,例如:
CommandParameter="{x:Static local:State.NeutralState}"而不仅仅是CommandParameter="NeutralState",它将传递一个字符串
https://stackoverflow.com/questions/72317192
复制相似问题