C# 使用单个通用命令处理多个按钮
我正在构建一个简单的计算器应用程序。我还在学习如何在我的应用程序中应用MVVM模式 我希望我的计算器的每一个“数字”按钮都绑定到同一个命令,它们只会在引发命令的按钮的数字(文本)上有所不同 例如,当单击按钮“1”时,我希望收到关于它的通知,从发送者的属性中提取“1”,然后继续所需的其余工作 这允许我定义一个方法,而不是10个不同的处理程序 就我在所有MVVM教程中看到的情况而言,这是不可能的,因为命令绑定在绑定到处理单击的实际方法时并没有向我提供所有这些信息C# 使用单个通用命令处理多个按钮,c#,.net,wpf,binding,mvvm,C#,.net,Wpf,Binding,Mvvm,我正在构建一个简单的计算器应用程序。我还在学习如何在我的应用程序中应用MVVM模式 我希望我的计算器的每一个“数字”按钮都绑定到同一个命令,它们只会在引发命令的按钮的数字(文本)上有所不同 例如,当单击按钮“1”时,我希望收到关于它的通知,从发送者的属性中提取“1”,然后继续所需的其余工作 这允许我定义一个方法,而不是10个不同的处理程序 就我在所有MVVM教程中看到的情况而言,这是不可能的,因为命令绑定在绑定到处理单击的实际方法时并没有向我提供所有这些信息 有什么方法可以轻松完成我的要求吗?只
有什么方法可以轻松完成我的要求吗?只需提供数字作为参考。(作为(and)的方法参数传递)假设我理解您试图执行的操作,您可以使用
CommandParameter
属性让不同的按钮向同一命令提供值。例如:
。。。
...
在命令的委托方法中:
private void按钮ICKCommandHandler(对象参数)
{
开关(int.Parse(parameter.ToString()))
{
案例1:
...
案例2:
...
}
}
谢谢,我就是这么做的。两个小问题--我可以只参考按钮的内容一次吗?意思是,在CommandParameter中“引用”内容而不是再次写入内容?第二个问题——作为CommandParameter传递的参数的运行时类型是什么?它是如何确定的?@liortal:CommandParameter=“{Binding Content,RelativeSource={RelativeSource Self}}”
CommandParameter似乎是作为字符串传递的,因此处理程序应该使用int.Parse
来检索整数。我已经更新了我的答案来回答你的问题。