Учитывая, что вы хотите иметь функциональность за кнопками панели инструментов (что, как я полагаю, потребует ссылки на сетку), вероятно, для этого имеет смысл наследовать от HeaderedContentControl. Это означает, что вы можете поместить любое содержимое в элемент управления, но было бы возможно переопределить метаданные, чтобы добавить проверку для этого.
Где угодно, вот xaml:
<!-- ToolBoxGridControl.xaml -->
<HeaderedContentControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="WpfApplication3.ToolBoxGridControl">
<HeaderedContentControl.Header>
<StackPanel Orientation="Horizontal">
<Button/>
<Button/>
<Button/>
</StackPanel>
</HeaderedContentControl.Header>
<HeaderedContentControl.Template>
<ControlTemplate TargetType="HeaderedContentControl">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<ContentControl Grid.Row="0" Content="{TemplateBinding Header}"/>
<ContentControl Grid.Row="1" Content="{TemplateBinding Content}"/>
</Grid>
</ControlTemplate>
</HeaderedContentControl.Template>
</HeaderedContentControl>
И простой программный код (где вы можете поместить свою реализацию набора инструментов).
public partial class ToolBoxGridControl : HeaderedContentControl
{
private DataGrid DataGrid { get { return (DataGrid)Content; } }
public ToolBoxGridControl()
{
this.InitializeComponent();
}
}
Для фактического использования вы можете просто добавить следующее в свой XAML со своей сеткой данных
<local:ToolBoxGridControl>
<DataGrid/>
</local:ToolBoxGridControl>