MainWindow
でSubWindow
をShowDialog
してるんですよね?
だったらMainWindow
側でAdd
すればいいんじゃないですか。
MainWindow
xml
1<Window
2 x:Class="Questions364277.MainWindow"
3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
5 Title="MainWindow"
6 Width="800"
7 Height="450">
8 <DockPanel>
9 <Button
10 Click="AddButton_Click"
11 Content="追加..."
12 DockPanel.Dock="Top" />
13 <ListBox x:Name="listBox" />
14 </DockPanel>
15</Window>
cs
1using System.Windows;
2
3namespace Questions364277
4{
5 public partial class MainWindow : Window
6 {
7 public MainWindow() => InitializeComponent();
8
9 private void AddButton_Click(object sender, RoutedEventArgs e)
10 {
11 var sub = new SubWindow { Owner = this, };
12
13 if (sub.ShowDialog() == true)
14 {
15 listBox.Items.Add(sub.mainText.Text + "/" + sub.subText.Text);
16 }
17 }
18 }
19}
SubWindow
xml
1<Window
2 x:Class="Questions364277.SubWindow"
3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
5 Title="SubWindow"
6 Width="400"
7 FocusManager.FocusedElement="{Binding ElementName=mainText}"
8 SizeToContent="Height"
9 WindowStartupLocation="CenterOwner">
10 <StackPanel>
11 <TextBlock Margin="5,0" Text="メインテキスト" />
12 <TextBox x:Name="mainText" Margin="5,0" />
13 <TextBlock Margin="5,0" Text="サブテキスト" />
14 <TextBox x:Name="subText" Margin="5,0" />
15
16 <StackPanel HorizontalAlignment="Right" Orientation="Horizontal">
17 <Button
18 MinWidth="80"
19 Margin="5"
20 Click="AddButton_Click"
21 Content="追加"
22 IsDefault="True" />
23 <Button
24 MinWidth="80"
25 Margin="5"
26 Content="キャンセル"
27 IsCancel="True" />
28 </StackPanel>
29 </StackPanel>
30</Window>
cs
1using System.Windows;
2
3namespace Questions364277
4{
5 public partial class SubWindow : Window
6 {
7 public SubWindow() => InitializeComponent();
8
9 private void AddButton_Click(object sender, RoutedEventArgs e)
10 {
11 if (string.IsNullOrWhiteSpace(mainText.Text))
12 {
13 MessageBox.Show("文字を入力してください");
14 mainText.Focus();
15 }
16 else
17 {
18 // このMainWindowは今出ているMainWindowではない!
19 // 新しくMainWindowを作ってしまっている(だから2つになってしまう)
20 //MainWindow win = new MainWindow();
21
22 // どうしてもこっち側(SubWindow)でやりたいのであればこんな感じ
23 //var win = Application.Current.MainWindow as MainWindow;
24 //win.listBox.Items.Add(mainText.Text + "/" + subText.Text);
25
26 DialogResult = true;
27 }
28 }
29 }
30}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/14 03:31