WPFの複数のウィンドウをメインウィンドウに表示する

WPFでは、次の手法でメインウィンドウに複数の子ウィンドウを表示できます

  1. ContentControlの使用:メインウインドウのXAMLで、ContentControlコントロールをコンテナとし、子ウインドウの内容をContentControlの内容に設定します。DataTemplateを使用して、子ウインドウの外観を定義できます。メインウインドウのコードで、子ウインドウのインスタンスを作成して、ContentControlのContentプロパティに代入します。

例示コード:

<Window x:Class="MainWindow">
<Grid>
<ContentControl x:Name="contentControl" />
</Grid>
</Window>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
SubWindow subWindow = new SubWindow();
contentControl.Content = subWindow;
}
}
  1. コンテナコントロール(Grid、DockPanelなど)を使う:メインウィンドウのXAMLファイルで、GridやDockPanelなどのコンテナコントロールを使い、その子画面を適切な位置に追加すること。グリッドの行と列の定義を使って、位置とサイズを調整することもできる。

ネイティブな日本語で言い換えてください。1つのオプションのみ必要です:コード例:

<Window x:Class="MainWindow">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Button Content="Show SubWindow" Click="ShowSubWindowButton_Click" />
<ContentControl x:Name="subWindowContainer" Grid.Row="1" Visibility="Collapsed" />
</Grid>
</Window>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void ShowSubWindowButton_Click(object sender, RoutedEventArgs e)
{
if (subWindowContainer.Visibility == Visibility.Collapsed)
{
SubWindow subWindow = new SubWindow();
subWindowContainer.Content = subWindow;
subWindowContainer.Visibility = Visibility.Visible;
}
}
}

上のサンプルでは、メインウィンドウにはボタンがあり、ボタンがクリックすると、グリッドの2行目にサブウィンドウが表示されます。

  1. ダイアログ(Dialog)を使用する:メインフォームでサブフォームのShowDialogメソッドを呼び出し、サブフォームをモーダルダイアログとして表示します。これにより、サブフォームが閉じられるまでメインフォームは表示されたままになり、メインフォーム上の他のコントロールは無効化されます。

サンプルコード:

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void ShowSubWindowButton_Click(object sender, RoutedEventArgs e)
{
SubWindow subWindow = new SubWindow();
subWindow.ShowDialog();
}
}

上の例では、メインフォームにボタンがあり、ボタンを押すとサブフォームをモーダルダイアログとして表示します。

bannerAds