在C#/XAML中传递值的最佳方法
我刚刚开始学习C#,希望您能帮助我选择传递值的最佳方式。我正在做一个在VisualStudio中构建计算器的练习。单击按钮后,我需要传递/获取值 我可以看到一种(草率的?)方法是为每个按钮的点击事件创建代码。这样做,我会确定哪个按钮被按下。。。然后可以调用一个方法并向其传递一个硬编码参数,该参数指示按钮的值。例如,按下一个按钮时,“b输入\单击(1)” 另一种方法是获取发送者的名称,然后使用switch语句检查按钮的名称并分配值。例如:在C#/XAML中传递值的最佳方法,c#,xaml,C#,Xaml,我刚刚开始学习C#,希望您能帮助我选择传递值的最佳方式。我正在做一个在VisualStudio中构建计算器的练习。单击按钮后,我需要传递/获取值 我可以看到一种(草率的?)方法是为每个按钮的点击事件创建代码。这样做,我会确定哪个按钮被按下。。。然后可以调用一个方法并向其传递一个硬编码参数,该参数指示按钮的值。例如,按下一个按钮时,“b输入\单击(1)” 另一种方法是获取发送者的名称,然后使用switch语句检查按钮的名称并分配值。例如: private void BtnEntry_Cli
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 .....
}
}
第三种选择是将值放入按钮的标记属性中,然后从那里获取它
是否有其他使用RoutedEventArgs的选项?如果是这样,你能提供示例代码吗
在上面的选项中有没有最好的方法。。。还是有更好的方法
谢谢
注:一位编辑指出,这个问题与发布在上的问题有关。我觉得这是一个更广阔的视角,解决了更多潜在的解决方案,也让我这样的“noobs”更容易理解。另一个问题是关于绑定代码的,这对我来说是一个毫无帮助的答案
然而,我确实遇到了关于命令的问题,这扩展了Drew Noakes和kidshaw提出的想法。(谢谢!)
因此,我建议将此问题作为一个单独的问题,因为它提供了一个比另一个更容易的切入点,也涉及到更多的选项。在您提供的选项中,标签将是我的首选。但由于这是wpf,您可以实现一个mvvm解决方案,其中您有一个命令并向viewmodel提供一个参数
通常,mvvm的开销可能会阻碍它在小型应用程序(如计算器)中的使用。但是,既然你是一个新手,并且在寻找选择,那就值得做一些小事情来学习它。我不喜欢
标签
属性,因为它不是键入的。您可以考虑从按钮继承类,并使该类实现暴露其基础数值的属性。查看使用数字按钮的命令,并将该值作为命令参数传递。有很多方法可以实现您的目标,但我可能会使用命令参数。根据我的回答,我同意Drew的观点。可能重复谢谢!你能告诉我为什么你不喜欢tag这个属性吗?我想这与另一个答案有关。标记是一个字符串值,出于您的目的,它应该可以。您可以在计算器上模拟具有值或运算符的键,所有这些键都具有字符表示。mvvm策略将允许您针对底层逻辑编写单元测试,而无需创建UI。正如我所说,完美的教程项目。