我有一个方法和一个在内部创建的带有按钮的自定义WPF窗口(在方法内部创建)。 按钮:btnStart,btnCancel 点击事件处理程序也是在同一方法内确定的,原因是按钮是动态创建的。
方法返回布尔值。
所以我需要的是等待WPF窗口关闭的方法。 通过调用Window.Close()方法,Close事件在btnStart.Click事件处理程序中引发。 窗口没有[X]红色关闭按钮(自定义窗口)。 它仅从btnStart.Click事件处理程序关闭。
因此,我希望我的方法仅在关闭窗口之后返回布尔值。
这是我的代码:
Func<bool> showSetParametersWindowAction = delegate ()
{
Grid gridMain = new Grid();
UserControl userControl = new UserControl();
userControl.Content = gridMain;
ItemInfoWindow setParametersWindow = new ItemInfoWindow(userControl) { Title = "Set params", Width = 540, Height = 200 + xmlParameters.Count * 25, WindowStartupLocation = WindowStartupLocation.CenterScreen };
gridMain.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
gridMain.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(40, GridUnitType.Pixel) });
gridMain.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(10, GridUnitType.Pixel) });
CustomButton btnStart = new CustomButton() { Content = "Start", Width = 100, Height = 35, HorizontalAlignment = HorizontalAlignment.Right, VerticalAlignment = VerticalAlignment.Center };
btnStart.SetValue(Grid.RowProperty, gridMain.RowDefinitions.Count - 2);
btnStart.SetValue(Grid.ColumnProperty, 0);
CustomButton btnCancel = new CustomButton() { Content = "Cancel", Width = 100, Height = 35, HorizontalAlignment = HorizontalAlignment.Left, VerticalAlignment = VerticalAlignment.Center };
btnCancel.SetValue(Grid.RowProperty, gridMain.RowDefinitions.Count - 2);
btnCancel.SetValue(Grid.ColumnProperty, 2);
gridMain.Children.Add(btnStart);
gridMain.Children.Add(btnCancel);
bool ret = false;
setParametersWindow.ShowDialog(this);
btnStart.Click += delegate (object se, RoutedEventArgs routedEventArgs)
{
ret = true;
setParametersWindow.Close();
};
btnCancel.Click += delegate (object sen, RoutedEventArgs routedEventArg)
{
setParametersWindow.Close();
};
return ret;
};
我在Stack上尝试了很多答案,但尚未成功。 预先感谢。