C# WPF中的事件处理

C# WPF中的事件处理,c#,wpf,event-handling,C#,Wpf,Event Handling,窗口中有一个按钮btn\u Edit。单击该按钮时,将打开一个新窗口(new\u-win),并向new\u-win上的按钮(btn\u-OK)添加一个单击事件。看来,btn\u OK\u单击不起作用,因为new\u win没有关闭。问题在哪里 BC_edit new_win = new BC_edit(); private void btn_Edit_Click(object sender, RoutedEventArgs e) {

窗口中有一个按钮
btn\u Edit
。单击该按钮时,将打开一个新窗口(
new\u-win
),并向
new\u-win
上的按钮(
btn\u-OK
)添加一个单击事件。看来,
btn\u OK\u单击
不起作用,因为
new\u win
没有关闭。问题在哪里

    BC_edit new_win = new BC_edit();

    private void btn_Edit_Click(object sender, RoutedEventArgs e)
    {            
        new_win.Title = "a_title";
        new_win.ShowDialog();

        new_win.btn_OK.Click += new RoutedEventHandler(btn_OK_Click);            
    }

    private void btn_OK_Click(object sender, RoutedEventArgs e)
    {
        _MyCollection.Add(new MyData
        {
            Boundary = new_win.Title,
            Type = new_win.cmb_BC_edit_type.SelectedItem.ToString(),
            Option = new_win.cmb_BC_edit_options.SelectedItem.ToString()
        });

        new_win.Close();
    }

在显示新窗口之前,您需要订阅活动:

    new_win.btn_OK.Click += new RoutedEventHandler(btn_OK_Click);
    new_win.ShowDialog();

请记住,
ShowDialog
方法正在阻塞:在关闭窗口之前,它不会返回,因此在此之前不会执行以下语句。

在显示新窗口之前,您需要订阅事件:

    new_win.btn_OK.Click += new RoutedEventHandler(btn_OK_Click);
    new_win.ShowDialog();
请记住,
ShowDialog
方法是阻塞的:它在窗口关闭之前不会返回,因此在此之前不会执行以下语句