在c# /XAML中传递值的最佳方式
本文关键字:最佳 方式 XAML | 更新日期: 2023-09-27 18:09:17
我刚刚开始学习c#,希望您能帮助我选择传递值的最佳方式。我在Visual Studio里做一个计算器。我需要传递/获取值一旦按钮被点击。
我可以看到这样做的一种(草率的?)方法是为每个按钮的点击事件创建代码。这样,我就能确定哪个按钮被按下了……然后可以调用一个方法,并向它传递一个硬编码的参数,指示按钮的值。例如,当按下一个按钮时,"BtnEntry_Click(1)"。
另一种方法是获取发送者的名称,然后使用switch语句检查按钮的名称并分配值。例如:
private void BtnEntry_Click(object sender, RoutedEventArgs e)
{
var buttonClicked = sender as Button;
switch (buttonClicked.Name)
{
case "btnOne":
// The one button was pressed, so pass 1
break;
case "btnTwo":
//The two button was pressed, so pass 2
break;
//etc .....
}
}
第三种选择是将值放入按钮的tag属性中,然后从那里抓取它。
是否有另一个选项使用RoutedEventArgs?如果有,你能提供示例代码吗?
在上面的选项中有没有最好的方法…还是有更好的方法?
谢谢!
注意:编辑注意到这个问题与在这个问题上发布的问题相关。我觉得这是一个更广泛的观点,解决了更多潜在的解决方案,也更容易让像我这样的"新手"理解。另一个问题有一些关于绑定代码的东西,这使得它对我来说是一个没有帮助的答案。
然而,我确实遇到了这个关于命令的答案,它扩展了Drew Noakes和kidshaw提供的想法。(谢谢!)
所以,我建议把这个问题作为一个单独的问题,因为它提供了一个比其他更容易的切入点,也提供了更多的选项。
在您提供的选项中,标签是我的首选。但由于这是wpf,您可以实现mvvm解决方案,其中您有一个命令并向视图模型提供一个参数。
通常mvvm有开销,这可能会阻碍它在小型应用程序(如计算器)中的使用。但是,既然你是一个新手,正在寻找选项,那么就值得做一些小的事情来学习它。
我不是Tag
属性的粉丝,因为它没有键入。您可以考虑从Button继承一个类,并让该类实现一个公开其底层数值的属性。