The GroupBox is a familiar control for organizing numerous controls. You might use it to surround a group of CheckBoxes or radio buttons. The GroupBox is a content control, and as a content control, it can only have one child. You need to set a GroupBox’s content to an intermediate control that can contain multiple children. For example, you might use a StackPanel.
The Header property of the GroupBox can be set to an arbitrary object. If that object derives from UIElement, it is rendered as expected. For example, the header could be a fully-functional Button.
<Window x:Class="GroupBoxSimple.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:GroupBoxSimple" mc:Ignorable="d" WindowStartupLocation="CenterScreen" Title="GroupBoxSimple" Height="200" Width="300"> <Grid> <GroupBox Margin="10"> <GroupBox.Header> <Button Click="Button_Click">To Do</Button> </GroupBox.Header> <StackPanel> <CheckBox>Shovel the Snow</CheckBox> <CheckBox>Cut the grass</CheckBox> <CheckBox>Take out the garbage</CheckBox> </StackPanel> </GroupBox> </Grid> </Window>
Here is some code behind.
using System.Windows; namespace GroupBoxSimple { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void Button_Click(object sender, RoutedEventArgs e) { MessageBox.Show("Some work to do.", "GroupBoxSimple", MessageBoxButton.OKCancel, MessageBoxImage.Warning); } } }