Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#/XAML中传递值的最佳方法_C#_Xaml - Fatal编程技术网

在C#/XAML中传递值的最佳方法

在C#/XAML中传递值的最佳方法,c#,xaml,C#,Xaml,我刚刚开始学习C#,希望您能帮助我选择传递值的最佳方式。我正在做一个在VisualStudio中构建计算器的练习。单击按钮后,我需要传递/获取值 我可以看到一种(草率的?)方法是为每个按钮的点击事件创建代码。这样做,我会确定哪个按钮被按下。。。然后可以调用一个方法并向其传递一个硬编码参数,该参数指示按钮的值。例如,按下一个按钮时,“b输入\单击(1)” 另一种方法是获取发送者的名称,然后使用switch语句检查按钮的名称并分配值。例如: private void BtnEntry_Cli

我刚刚开始学习C#,希望您能帮助我选择传递值的最佳方式。我正在做一个在VisualStudio中构建计算器的练习。单击按钮后,我需要传递/获取值

我可以看到一种(草率的?)方法是为每个按钮的点击事件创建代码。这样做,我会确定哪个按钮被按下。。。然后可以调用一个方法并向其传递一个硬编码参数,该参数指示按钮的值。例如,按下一个按钮时,“b输入\单击(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 .....
        }
    }
第三种选择是将值放入按钮的标记属性中,然后从那里获取它

是否有其他使用RoutedEventArgs的选项?如果是这样,你能提供示例代码吗

在上面的选项中有没有最好的方法。。。还是有更好的方法

谢谢

注:一位编辑指出,这个问题与发布在上的问题有关。我觉得这是一个更广阔的视角,解决了更多潜在的解决方案,也让我这样的“noobs”更容易理解。另一个问题是关于绑定代码的,这对我来说是一个毫无帮助的答案

然而,我确实遇到了关于命令的问题,这扩展了Drew Noakes和kidshaw提出的想法。(谢谢!)


因此,我建议将此问题作为一个单独的问题,因为它提供了一个比另一个更容易的切入点,也涉及到更多的选项。

在您提供的选项中,标签将是我的首选。但由于这是wpf,您可以实现一个mvvm解决方案,其中您有一个命令并向viewmodel提供一个参数


通常,mvvm的开销可能会阻碍它在小型应用程序(如计算器)中的使用。但是,既然你是一个新手,并且在寻找选择,那就值得做一些小事情来学习它。

我不喜欢
标签
属性,因为它不是键入的。您可以考虑从按钮继承类,并使该类实现暴露其基础数值的属性。

查看使用数字按钮的命令,并将该值作为命令参数传递。有很多方法可以实现您的目标,但我可能会使用命令参数。根据我的回答,我同意Drew的观点。可能重复谢谢!你能告诉我为什么你不喜欢tag这个属性吗?我想这与另一个答案有关。标记是一个字符串值,出于您的目的,它应该可以。您可以在计算器上模拟具有值或运算符的键,所有这些键都具有字符表示。mvvm策略将允许您针对底层逻辑编写单元测试,而无需创建UI。正如我所说,完美的教程项目。