WPF ウィンドウのコード ビハインドで作成している Xceed (Xceed.Wpf.Toolkit) 子ウィンドウがあり、期待どおりに動作しています。
private void CustomerNotesPopup(string text, string caption)
{
TextBlock tbCustomerNotes = new TextBlock()
{
Text = text,
Margin = new Thickness(10),
TextWrapping = TextWrapping.Wrap,
FontSize = 20
};
Button btnConfirm = new Button()
{
Width = 150,
FontWeight = FontWeights.Bold,
Height = 59,
Content = "Confirm",
FontSize = 22,
Background = Brushes.Black,
Foreground = Brushes.White,
BorderBrush = Brushes.Black
};
btnConfirm.Click += btn_Click;
StackPanel sp = new StackPanel()
{
Orientation = Orientation.Vertical,
Margin = new Thickness(5)
};
sp.Children.Add(tbCustomerNotes);
sp.Children.Add(btnConfirm);
Xceed.Wpf.Toolkit.ChildWindow pop = new Xceed.Wpf.Toolkit.ChildWindow()
{
Height = 550,
Width = 550,
IsModal = true,
Content = sp,
WindowStartupLocation = Xceed.Wpf.Toolkit.WindowStartupLocation.Center,
Caption = caption,
Name = "PopUpWindow"
};
cgcanvas.Children.Add(pop);
pop.Show();
}
今、私は btnConfirm.Click += btn_Click; を接続しようとしています。ボタンがクリックされたときにポップアップを閉じるイベント。Xceed Child の名前を見つけて閉じるいくつかの方法を試しましたが、コマンドで名前を見つけて閉じることができませんでした。
私はこれに近いと思いますが、これまでのところ、コードでそれを取得して閉じる方法がわかりません。
private void btn_Click(object sender, RoutedEventArgs e)
{
//foreach (Xceed.Wpf.Toolkit.ChildWindow popwindow in Application.Current.Windows)
//{
// //if (window.Name == "PopUpWindow")
// //{
// // window.Close();
// popwindow.Close();
// //}
//}
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(cgcanvas); i++)
{
var nameCheck = VisualTreeHelper.GetChild(cgcanvas, i) as Xceed.Wpf.Toolkit.ChildWindow;
//if (nameCheck.Name == "PopUpWindow")
//{
// MessageBox.Show("Yes");
//}
}
}