查找打开新窗口的方法名称(c#wpf)

查找打开新窗口的方法名称(c#wpf),c#,wpf,events,event-handling,window,C#,Wpf,Events,Event Handling,Window,我试图找到一种方法来获取弹出新窗口的方法调用的字符串名称。我有三个按钮点击事件处理程序,它们将打开新窗口,但我需要知道哪个调用了.Show() 我不想有三扇单独的窗户!是否有可以从中提取调用方的开始事件处理程序参数?此处 Console.write(triggeredBy)可以通过记录到文件或其他方式输出值。此值将指示代码采用的路径 private void buttonSettingsPortfolio1_Click(object sender, RoutedEventArgs e)

我试图找到一种方法来获取弹出新窗口的方法调用的字符串名称。我有三个按钮点击事件处理程序,它们将打开新窗口,但我需要知道哪个调用了.Show()

我不想有三扇单独的窗户!是否有可以从中提取调用方的开始事件处理程序参数?

此处
Console.write(triggeredBy)可以通过记录到文件或其他方式输出值。此值将指示代码采用的路径

private void buttonSettingsPortfolio1_Click(object sender, RoutedEventArgs e)
    {
        Open("buttonSettingsPortfolio1_Click");
    }

    private void buttonSettingsPortfolio2_Click(object sender, RoutedEventArgs e)
    {
        Open("buttonSettingsPortfolio2_Click");
    }

    private void buttonSettingsPortfolio3_Click(object sender, RoutedEventArgs e)
    {
       Open("buttonSettingsPortfolio3_Click");
    }

    private Open(string triggeredBy){
        Console.write(triggeredBy); // You can write to file or output in some different way here.
        var settingsWindow = new MobilityPortfolioSettings();
        settingsWindow.Show();
}

您只需在MobilityPortfolioSettings类中添加一个公共变量,并在每个方法中设置其值,例如:在buttonSettingsPortfolio1中单击AddMobilityPortfolioSettings.variable=1,依此类推。

尝试以下操作:

  • 将发件人强制转换为按钮,然后获取其名称
  • 更改MobilityPortfolioSettings构造函数,使其需要字符串参数
  • 将按钮名称传递给构造函数

    private void buttonSettingsPortfolio1_Click(object sender, RoutedEventArgs e)
    {
        string buttonName = "";
        if (sender is Button)
            buttonName = ((Button)sender).Name;
    
        Window settingsWindow = new MobilityPortfolioSettings(buttonName);
        settingsWindow.Show();
    }
    
  • 顺便说一句,使用窗口作为变量类型,而不是变量


    干杯

    如果3个按钮上的代码相同,为什么要保留所有3个按钮而不是1个?我需要知道按钮是从哪个网格位置单击的。该窗口将根据具体情况以不同方式运行button@MarkCorrigan您可以轻松获取触发事件的网格,它位于事件的sender参数中。因此,我需要在打开的窗口中将按下的按钮作为整数使用。啊,好的,是的,我在想这个问题,但我随后在视图模型中执行所有逻辑,但我想我可以为vm的构造函数提供该公共字段。现在看起来很明显,谢谢你的推动
    private void buttonSettingsPortfolio1_Click(object sender, RoutedEventArgs e)
    {
        string buttonName = "";
        if (sender is Button)
            buttonName = ((Button)sender).Name;
    
        Window settingsWindow = new MobilityPortfolioSettings(buttonName);
        settingsWindow.Show();
    }