当您实现ICommand
时,您必须实现public void Execute(object parameters)
方法,该方法采用object
类型的参数。
对于我的特定应用程序,我感兴趣的是如何实现一个以enum为参数的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
转换为我的enum类型State
吗?
对象参数可转换为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"
,后者将传递字符串