“confirmbtn_Click”的重载与委托“RoatedEventHandler”匹配

问题描述 投票:0回答:1
<Button x:Name="confirmbtn" Content="Register"
        HorizontalAlignment="Center" Height="60"
        Margin="0,286,0,0" VerticalAlignment="Top" Width="216" 
        Click="confirmbtn_Click"/>t
private void confirmbtn_Click(object sender, RoutedEventArgs e, MainWindow mainWindowInstance)
{
 ///
}

我试图在这里获取 MainWindow mainWindowInstance,但每次我将它放在某个地方时,我都会一遍又一遍地遇到相同的错误

c# wpf
1个回答
0
投票

每个事件都有唯一的签名,您无法更改它。要获取 mainWindow 的实例,您可以使用其他方式。例如,您可以使用以下代码:

Window mainWindow = Application.Current.MainWindow;

通过此代码,您可以获得应用程序的主窗口。

foreach (Window window in Application.Current.Windows)
{
  //
}

或者您可以使用此代码获取该按钮的父窗口

private Window FindParentWindow(DependencyObject child)
{
    DependencyObject parent= VisualTreeHelper.GetParent(child);

    //CHeck if this is the end of the tree
    if (parent == null) return null;

    Window parentWindow = parent as Window;
    if (parentWindow != null)
    {
        return parentWindow;
    }
    else
    {
        //use recursion until it reaches a Window
        return FindParentWindow(parent);
    }
}
private void confirmbtn_Click(object sender, RoutedEventArgs e)
{
  Window mainWindow = FindParentWindow(sender as DependencyObject);
}

或者您可能已经拥有它(如果此处理程序位于主窗口内)。

© www.soinside.com 2019 - 2024. All rights reserved.